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
ステートメントのスクリーンショットを以下に示します。
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn