序文MySQL バージョン 3.23.44 以降では、InnoDB エンジン タイプのテーブルは外部キー制約をサポートします。 外部キーを使用する条件: 1. 両方のテーブルは InnoDB テーブルである必要があります。MyISAM テーブルは現時点では外部キーをサポートしていません (将来のバージョンではサポートされる可能性があると言われていますが、少なくとも現時点ではサポートされていません)。 2. 外部キー列にはインデックスが必要です。MySQL 4.1.2 以降のバージョンでは、外部キーを作成すると自動的にインデックスが作成されますが、それ以前のバージョンを使用する場合は、明示的にインデックスを作成する必要があります。 3. 外部キー関係にある 2 つのテーブルの列は、同様のデータ型、つまり、int と tinyint のように相互に変換可能な列である必要がありますが、int と char はそうではありません。 外部キーの利点: 2 つのテーブルを関連付け、データの一貫性を確保し、いくつかのカスケード操作を実装できます。 1. 外部キーの作成構文1: 後続加算方式 alter table テーブル名 制約を追加 制約名 外部キー (現在のテーブルで制約されているフィールド) はメイン テーブル名 (制約されるフィールド名) を参照します。 テーブル student を変更し、制約 fk_class_student を追加し、更新時に外部キー (cls_id)、クラス (cls_id) を追加し、削除時にカスケードを実行し、アクションは実行しません。 構文2: テーブルの作成方法 学生テーブルを作成( sid int 主キー、 cls_id int が null ではない、 sname varchar(10) が null ではない、 制約 fk_class_student 外部キー (cls_id) は更新時にクラス (cls_id) を参照し、削除時にカスケードを実行します。アクションはありません。 )ENGINE=InnoDB デフォルト文字セット=utf8; 追加ポイント: SHOW CREATE TABLEクラス テーブル作成情報を照会できます テーブル `class` を作成します ( `cls_id` int NULLではない、 `cls_name` varchar(15) NOT NULL, 主キー (`cls_id`) ) エンジン=InnoDB デフォルト文字セット=utf8 次のデモンストレーションでは、先ほど作成した学生テーブルとクラステーブルを使用します。 内容は以下のとおりです 2. 4つの制約方法について親テーブルで更新/削除操作を実行する場合、子テーブルの操作タイプ
先ほど設定した外部キーを例に挙げます(更新時にカスケード、削除時にアクションなし) 削除しようとすると cls_id=1 のクラスから削除 結果は以下のとおりです 外部キー制約に on delete no action が存在するため、メイン テーブルでの削除操作は許可されないことがわかります。しかし、サブテーブルは cls_id=1 の学生から削除 親テーブルの関連キーを更新すると、on updateカスケードの存在により正常に更新されます。 cls_id=1 のクラスセット cls_id=4 を更新します メインテーブルが更新されると、子テーブルの外部キーフィールドも更新されます。 3. 外部キーを削除する方法テーブルサブテーブル名を変更し、外部キーを削除し、外部キー制約名を学生テーブルに変更し、外部キー fk_class_student を削除します。 外部キーを削除すると、親テーブルの動作は正常になります。 要約するこれで、MySQL の外部キーの作成、制約、削除に関するこの記事は終了です。MySQL の外部キーの作成、制約、削除の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML テーブル マークアップ チュートリアル (43): テーブル ヘッダーの VALIGN 属性
>>: Linux で Apache を使用してファイル サーバーを構築する手順
日常業務でファイルをダウンロードする一般的な方法は 2 つあります。 1 つ目は、サーバーのファイル...
1. MySQL インストール パス D:\xxx\MYSQL\MySQL Workbench CE...
チーム開発のプロセスでは、プロジェクトの安定性、コードの効率性、管理の利便性のために、内部開発および...
<br />1998年に最初の個人ページが誕生してから2008年の今日まで、デザイン業界...
ルーティングvue-router4 では API の大部分は変更されていないため、変更点のみに焦点を...
nginx.conf で複数のサーバーを設定します。 http リクエストを処理する際、nginx ...
目次1.関数内のこの方向1. 通常の機能2. コンストラクター3. オブジェクトメソッド4. イベン...
ELKとは何ですか? ELK は、Elastic が提供するログ収集およびフロントエンド表示ソリュー...
MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...
目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...
【質問】 INSERT 文は最も一般的な SQL 文の 1 つです。最近、MySQL サーバーが同時...
私は最近、ユーザー操作を元に戻す、またはやり直す機能を備えたビジュアル操作プラットフォームを開発して...
この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...
歴史は常に驚くほどうまく繰り返される。西洋建築とウェブデザインは、どちらも工学と芸術の組み合わせです...
Shell は C 言語で書かれたプログラムであり、ユーザーが Linux を使用するための橋渡しと...