序文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 を使用してファイル サーバーを構築する手順
この記事では、トークンログイン認証を実装するためのVUEの具体的なコードを例として紹介します。具体的...
コードをコピーコードは次のとおりです。 <meta name="viewport&q...
Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...
SELECT * FROM テーブル名制限m,n; SELECT * FROM テーブル LIMI...
LinuxホストにSSHサーバーをインストールするには、次のターミナルコマンドを使用します: sud...
メタタグ機能METAタグは、HTMLタグのHEAD領域にある重要なタグです。文書の文字セット、使用言...
そこで、この問題を解決するために埋め込みフレームワークを導入します。具体的な原則は、フォームがデータ...
MySql でリモート接続を許可する方法この目標を達成するには、2つのことを行う必要がある。ユーザー...
メモリストレージエンジンに関する知識ポイントメモリ ストレージ エンジンは日常業務ではほとんど使用さ...
0. はじめにibdata1 ファイルとは何ですか? ibdata1 は、innodb システム テ...
目次MySQLネイティブレプリケーションに基づくマスター-マスター同期ソリューションGaleraレプ...
MySQL 5.7.9 のインストールチュートリアルを録画してみんなと共有しましょう環境の紹介:オペ...
Navicat で MySql スケジュールタスクを作成する詳細な説明イベントは、MySQL が特定...
非準拠データがデータベースに入るのを防ぐために、ユーザーがデータを挿入、変更、削除、その他の操作を行...
Linuxは特定のプログラムを見つけますwhereis コマンドは主にプログラム ファイルを検索し、...