もっと詳しく

「PostgreSQLデータベースを使用していると、テーブルからレコードを削除しなければならない場合があります。 削除クエリを実行する前に、テーブルがテーブル間に不完全な関係を残していないことを確認することが重要です。

PostgreSQLでは、CASCADEDELETE機能を使用してこれを実現できます。 この機能により、削除操作で、指定されたレコードとそれらを参照する外部キーを削除できます。

この記事を使用して、PostgreSQLでカスケード削除を実行する方法を確認します。」

PostgreSQLカスケード削除

カスケード削除機能は非常に簡単です。 親レコードを削除すると、子レコードも削除されます。 誤って子レコードを削除しないようにするために、親テーブルの外部キー制約をNULLに設定できます。

これをどのように達成できるか見てみましょう。

サンプルデータベースを設定することから始めます。 psqlユーティリティで、次のコマンドを実行します。

1
2
3
4
5
6
7
8

作成 データベース “cascade_delete_db;”

オーナー = postgres
エンコーディング = 「UTF8」
LC_COLLATE = 「C」
LC_CTYPE = 「C」
テーブルスペース = pg_default
繋がり 制限 = 1;

作成したら、次のコマンドを実行してそのデータベースに切り替えます。

次に、クエリを実行して親テーブルを作成しましょう。

1
2
3
4
5
6
7

作成 テーブル ユーザー((
idシリアル 主要な
フルネーム VARCHAR((100)。
Eメール VARCHAR((255)。
VARCHAR((50)。
department_foreign_key INT いいえ ヌル
)。;

次に、子テーブルを次のように作成できます。

1
2
3
4

作成 テーブル デパートメント((
user_id SERIAL 主要な
デパートメント VARCHAR((50)。
)。;

次に、以下のコマンドに示すように、親テーブルに外部キー制約を追加する必要があります。

1
2

ALTER テーブル ユーザー 追加 外国 ((department_foreign_key)。
参考文献 デパートメント((ユーザーID)。 オン 消去 カスケード;

これで、次のようにいくつかのサンプルデータをテーブルに挿入できます。

1
2
3
4
5
6
7
8

入れる の中へ デパートメント((デパートメント)。
((「ゲーム開発」)。
((「DEV-OPS」)。
((「バックエンド-DEV」)。;
入れる の中へ ユーザー((フルネーム Eメール department_foreign_key)。
((「アリーK」 ‘[email protected]’ ‘私たち’ 1)。
((「カスパV」 ‘[email protected]’ 「CA」 2)。
((「Dev.W」 ‘[email protected]’ 「AF」 3)。;

次に、次のようにテーブルをクエリできます。

これにより、テーブルが返されます。

部門のテーブルから、次を実行できます。

1

選択する * から デパートメント;

結果のテーブル:

すべてのサンプルデータの準備ができたら、以下のクエリに示すようにカスケード削除を実行できます。

1

消去 から デパートメント どこ デパートメント=「DEV-OPS」;

上記のステートメントでは、通常の削除クエリを使用して、部門が「DEV-OPS」と等しいレコードを削除します。 カスケード削除を設定したので、usersテーブルをチェックして、department_foreign_keyが2のユーザーがドロップされていることを確認できます。

部門のテーブルからレコードを削除したにもかかわらず、ユーザーのテーブルには2つのレコードしかないことがわかります。

おめでとうございます。PostgreSQLでカスケード削除を実行する方法を学びました。

終了

このチュートリアルでは、外部キーを使用して2つのテーブルをリンクし、カスケード削除機能を設定する方法を説明しました。

読んでくれてありがとう!!

The post PostgreSQLカスケード削除 appeared first on Gamingsym Japan.