[解決済み] phpMyAdminで外部キーを設定する?
質問
phpMyAdminを使用してデータベースをセットアップしています。2つのテーブル(
foo
と
bar
),
を主キーとするインデックスを持つ
. 私はリレーショナルテーブルを作成しようとしています (
foo_bar
) の間で、それらの主キーを外部キーとして使用します。
私はこれらのテーブルをMyISAMとして作成しましたが、MyISAMは外部キーをサポートしないと読んだので、3つすべてをInnoDBに変更しました。すべて
id
フィールドは
INT(11)
.
を選択すると
foo_bar
テーブルで、quot;relation view"のリンクをクリックし、FK列を設定しようとすると
database.foo.id
と
database.bar.id
というメッセージが表示されます。
インデックスが定義されていません!"
各カラムの横に表示されます。
何が足りないのでしょうか?
明確化・更新
シンプルにするために、phpMyAdminを使い続けたいと思います。現在、PHP/CSS/Javascriptに集中できるXAMPPを使用していますが、phpMyAdminが付属しているので、簡単です。
また、明示的な外部キーはまだ設定できていませんが、リレーショナル・テーブルを持っているので、このような結合を行うことができます。
SELECT *
FROM foo
INNER JOIN foo_bar
ON foo.id = foo_bar.foo_id
INNER JOIN bar
ON foo_bar.bar_id = bar.id;
ただ、FKをデータベースで明示的に定義しておかないと、不安なんです。
どのように解決するのですか?
phpMyAdminを使用してリレーションを設定する場合、2つのことを行う必要があります。まず、参照元テーブルの外部キーカラムにインデックスを定義する必要があります(あなたの場合は、foo_bar.foo_idですね)。次に、リレーション・ビュー(参照元テーブル)で、参照するカラム(あなたの場合はfoo.id)を選択し、on updateとon deleteアクションを実行します。
複数のテーブルを連携させる場合、外部キーは便利だと思います。特に、参照オプションを正しく設定すれば、削除スクリプトは非常に短くなります。
EDIT: 両方のテーブルで InnoDB エンジンが選択されていることを確認してください。
関連
-
MySQLデータベース・インデックスの左端一致の原則
-
'INSERT文はFOREIGN KEY制約「FK_TourismReservation_Users」と競合していました。その
-
[解決済み] どのトランザクションが「テーブルメタデータのロック待ち」状態を引き起こしているかを確認するにはどうすればよいですか?
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] MySQL エラー 1215。外部キー制約を追加できません
-
[解決済み】外部キー制約。ON UPDATEとON DELETEを使用する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLデータ型の詳細
-
SpringBootのMySQLへの接続は、バックエンドのインターフェイスの操作方法を書き込むためのデータを取得するために
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
MySQLデータベースで数百万件のデータを10秒間で挿入
-
[解決済み】SQLサーバーのテンポラリーテーブルで「すでに名前のついたオブジェクトがあります」エラーが発生する。
-
MySQLにおけるvarchar型とchar型の違い
-
'INSERT文はFOREIGN KEY制約「FK_TourismReservation_Users」と競合していました。その
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?