1. 外部キー関数: MySQL は外部キー制約を使用して、テーブル間のデータの整合性と正確性を確保します。 2. 外部キーの使用条件
3. 文法を作成する
4. ケースデモンストレーション CASCADE制約モード 1. パワーテーブル(親テーブル)の国を作成する 国テーブルを作成 ( id int が null ではない、 名前varchar(30), 主キー(ID) ); 2. レコードを挿入します insert into country values(1,'Western Europe'); 国の値に挿入します(2,'Maya'); 国の値に挿入します(3,'シチリア'); 3. 武器テーブル(サブテーブル)を作成し、制約を設定します。create table solider( id int が null ではない、 名前varchar(30), 国ID int, 主キー(ID)、 外部キー(country_id)は、削除カスケードおよび更新カスケードでcountry(id)を参照します。 ); 4. 参照整合性テストを solider values(1,'Western European trainee infantry',1) に挿入します。 #insert は solider values(2,'Maya short spearman',2) に正常に挿入されました。 #insert は soldier values(3,'Sicily Norman Knights',3) に正常に挿入されました #挿入に成功しましたinsert into solider values(4,'French Swordsman',4); # 国テーブルに ID 4 の派閥がないため、挿入に失敗しました。5. 制約メソッド test insert into solider values(4, 'Maya Tiger Warriors', 2); #country where id=2 の delete が正常に挿入されました。 #これにより、兵士テーブル内の ID 2 と 4 のレコードが同時に削除されます。この派閥は親テーブルに存在しなくなったため、対応する武器は自然に消えます。update country set id=8 where id=1; #その結果、country_idが1であるsoliderテーブルのすべてのレコードも8に変更されます。 SET NULL制約あり 1. 兵士テーブル (サブテーブル) を作成し、制約関係を確立して、兵士が存在する場合はテーブルを削除します。 テーブル solider を作成します( id int が null ではない、 名前varchar(30), 国ID int, 主キー(ID)、 外部キー(country_id)はcountry(id)を参照し、削除時にnullが設定され、更新時にnullが設定されます。 ); 2. 参照整合性テストを solider values(1,'Western European trainee infantry',1) に挿入します。 #insert は solider に正常に挿入されました values(2,'Maya short spearman',2); #insert は soldier values(3,'Sicily Norman Knights',3) に正常に挿入されました #挿入に成功しましたinsert into solider values(4,'French Swordsman',4); #国テーブルに ID 4 の派閥がないため、挿入に失敗しました。3. 制約メソッド test insert into solider values (4, 'Sicilian Archer', 3); #country where id=3 の delete が正常に挿入されました。 #これにより、solider テーブルの ID 3 と 4 のレコードが NULL に設定されます。 国を更新します。id=1 の場合、id=8 を設定します。 # ソリダーテーブル内のcountry_idが1であるすべてのレコードをNULLに設定します NO ACTIONまたはRESTRICTモード(デフォルト) 1. 兵士テーブル (サブテーブル) を作成し、制約関係を確立して、兵士が存在する場合はテーブルを削除します。 テーブル solider を作成します( id int が null ではない、 名前varchar(30), 国ID int, 主キー(ID)、 外部キー(country_id)はcountry(id)を参照します。削除時はRESTRICT、更新時はRESTRICTです。 ); 2. 参照整合性テストを solider values(1,'Western European trainee infantry',1) に挿入します。 #insert は solider に正常に挿入されました values(2,'Maya short spearman',2); #insert は soldier values(3,'Sicily Norman Knights',3) に正常に挿入されました #挿入に成功しましたinsert into solider values(4,'French Swordsman',4); #国テーブル 3 に ID 4 の派閥がないため、挿入に失敗しました。制約メソッド テスト insert into solider values(4, 'Western European Knights', 1); #country where id=1 の delete が正常に挿入されました。 # エラーが発生しました。子テーブルに関連レコードがあるため、親テーブル内の対応するレコードを削除できません。つまり、arms テーブルには西ヨーロッパに属する武器も含まれているため、親テーブル内の西ヨーロッパ軍だけを削除することはできません。update country set id=8 where id=1; #エラー、子テーブルに関連レコードがあるため、親テーブルを変更できません 以上がMySQLの外部キー制約の詳細な説明です。MySQLの外部キー制約の詳細については、123WORDPRESS.COMの他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
>>: Linux 上でプライベート Git サーバーを構築するための詳細なチュートリアル
問題を見つける最近、プロジェクトで問題が発生しました。接続が多すぎるため、「接続が多すぎます」という...
ハイパーリンク a タグはリンク ポイントを表し、英語の単語「anchor」の略語です。その機能は、...
負荷分散とは負荷分散は主に、専用のハードウェア デバイスまたはソフトウェア アルゴリズムによって実現...
この記事では、MySQL 8.0.11 MSIバージョンのインストールと設定のチュートリアルを参考ま...
Docker 公式ドキュメント: https://docs.docker.com/ Docker は...
序文私のように、Java バックエンドに勤勉な人であれば、多数のプロジェクト機能を実装することに加え...
目次概要4つの例例1: 誕生日で説明する約束の基本例2: 数字当てゲーム例3: Web APIから国...
MySql データベースのサブクエリ:サブクエリ: 選択クエリ ステートメント内に別の選択ステートメ...
質問コードにはプロンプトがありません: RN 開発に不慣れな、フロントエンド以外の学生の多くは、「ど...
序文ページの HTML 構造にネストされたボックスが多数含まれている場合、ページに複数の垂直スクロー...
最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...
目次1. ジョイントインデックスの故障の条件2. インデックス失敗の条件1. ジョイントインデックス...
実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...
成し遂げるこの効果は CSS を使用して完全に再現することは困難です。 CSS でシミュレートされた...
もしかしたら私の考え方が間違っていたのかもしれないし、問題の説明が少し乱雑だったのかもしれないが、こ...