HOWTO · MySQL
MySQL ドロップ外部キー
この記事では、MySQL の外部キーを削除する方法を紹介します。
このページの内容
外部キーは、2つ以上のテーブルをリンクし、それらの間に意味のあるリンクを形成するキーです。
このキーは、子テーブルの主キーを参照し、親テーブルの外部キーとして機能します。 多くの場合、参照キー制約と呼ばれます。
MySQL で外部キーを削除する
外部キーについて収集された事実は、それが主キーとして機能するため、テーブル内のエントリは 1つだけであり、レコードは主キーに関して一意であるということです。
外部キーは、ユーザーがテーブル間でリンクされたレコードを直接削除することを制限する制約であり、ユーザーの操作を防ぎ、データ セキュリティにつながります。
外部キーが存在するテーブルは子テーブルと呼ばれ、キーの元となるテーブルは親テーブルと呼ばれます。 テーブルをリンクするという概念は、リレーショナル データベース管理システムにしかありません。
MySQL での外部キー制約の利点は次のとおりです。
-
制約により、参照整合性が強制され、テーブル全体で一貫性が保たれます。
-
ON DELETE CASCADEやON UPDATE CONSTRAINTSなどの制約を使用すると、データベース全体でテーブルの一貫した動作を維持できます。 -
相互リンクされたテーブルの制約を維持すると、テーブルを記憶するオーバーヘッドが減少し、リンクされたテーブルの検出に使用されるため、最終的にパフォーマンスが向上します。
-
テーブルがすでにリンクされているため、結合を改善し、結果をより速く取得することで、パフォーマンスが向上します。
-
外部キーの前に親テーブルのレコードが削除されると、クエリは失敗し、レコードを削除できません。 テーブル間のリンケージを示し、最初に親テーブルではなく子テーブルからレコードを削除するように求めます。
以下は同じスクリーンショットです。
外部キーを削除するには、まずテーブルを作成し、テーブルに外部キーを生成する必要があります。 以下は、定義されたテーブルに外部キー制約を作成するコマンドです。
create table student(id varchar(255), name varchar(255), dob date, deptId varchar(255), primary key(id));
create table department(dept_id varchar(255), id varchar(255), dept_name varchar(255), constraint fk_id foreign key(id) references student(id));
まず、上記のクエリは student と department の 2つのテーブルを作成します。 このテーブルは、student テーブルの属性 id が department テーブルの外部キー id として機能する親子関係の形式になっています。
添付のスクリーンショット:
テーブルにレコードが挿入され、挿入されたレコードを delete ステートメントで操作しようとすると、上記のエラーが表示されます。 移入の問題を修正するには、外部キー制約を削除して削除アクションを実行します。
上記で作成した制約を MySQL で削除する構文は次のとおりです。
Alter table table_name drop constraint constraint_name;
上記のコマンドは、alter コマンドを使用してテーブル スキーマを変更し、drop キーワードを使用してスキーマに適用された制約を削除します。 Alter table は、DDL コマンドとしても知られるデータ定義言語であり、データベースとテーブル スキーマの作成に役立ちます。
Alter table department drop constraint fk_id;
外部キー制約が削除されたときの delete ステートメントのスクリーンショットを以下に示します。