MySQL ドロップ外部キー

Rashmi Patidar 2024年2月15日
MySQL ドロップ外部キー

外部キーは、2つ以上のテーブルをリンクし、それらの間に意味のあるリンクを形成するキーです。

このキーは、子テーブルの主キーを参照し、親テーブルの外部キーとして機能します。 多くの場合、参照キー制約と呼ばれます。

MySQL で外部キーを削除する

外部キーについて収集された事実は、それが主キーとして機能するため、テーブル内のエントリは 1つだけであり、レコードは主キーに関して一意であるということです。

外部キーは、ユーザーがテーブル間でリンクされたレコードを直接削除することを制限する制約であり、ユーザーの操作を防ぎ、データ セキュリティにつながります。

外部キーが存在するテーブルはテーブルと呼ばれ、キーの元となるテーブルはテーブルと呼ばれます。 テーブルをリンクするという概念は、リレーショナル データベース管理システムにしかありません。

MySQL での外部キー制約の利点は次のとおりです。

  1. 制約により、参照整合性が強制され、テーブル全体で一貫性が保たれます。
  2. ON DELETE CASCADEON UPDATE CONSTRAINTS などの制約を使用すると、データベース全体でテーブルの一貫した動作を維持できます。
  3. 相互リンクされたテーブルの制約を維持すると、テーブルを記憶するオーバーヘッドが減少し、リンクされたテーブルの検出に使用されるため、最終的にパフォーマンスが向上します。
  4. テーブルがすでにリンクされているため、結合を改善し、結果をより速く取得することで、パフォーマンスが向上します。
  5. 外部キーの前に親テーブルのレコードが削除されると、クエリは失敗し、レコードを削除できません。 テーブル間のリンケージを示し、最初に親テーブルではなく子テーブルからレコードを削除するように求めます。
以下は同じスクリーンショットです。

子テーブルにリンクが存在する場合、親からレコードを削除

外部キーを削除するには、まずテーブルを作成し、テーブルに外部キーを生成する必要があります。 以下は、定義されたテーブルに外部キー制約を作成するコマンドです。

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));

まず、上記のクエリは studentdepartment の 2つのテーブルを作成します。 このテーブルは、student テーブルの属性 iddepartment テーブルの外部キー 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 Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

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

関連記事 - MySQL Key