ホームページ >データベース >mysql チュートリアル >MySQL のメインテーブルからレコードを削除した後に、従属テーブルからレコードを正しく削除する方法は?

MySQL のメインテーブルからレコードを削除した後に、従属テーブルからレコードを正しく削除する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-03 08:18:02916ブラウズ

How to Correctly Delete Records from a Dependent Table After Deleting from the Main Table in MySQL?

MySQL トリガー: メイン テーブルの削除後に依存テーブルからレコードを削除する

データベース スキーマでは、次のような複数のテーブルがあるのが一般的です。彼らの間の関係。メインテーブルでレコードが操作される場合、従属テーブルでも対応するアクションを実行する必要がある場合があります。 MySQL トリガーは、このような操作を自動化する便利な方法を提供します。

patrons というテーブルに個人に関する情報が保存され、patron_info という関連テーブルに各パトロンの追加の詳細が含まれるシナリオを考えてみましょう。パトロンがパトロン テーブルから削除されるときは、パトロンに対応する情報も patron_info テーブルから削除することが望ましいです。

これを実現するには、DELETE トリガーを使用できます。ただし、次のコードを使用してトリガーを作成しようとしたときに構文エラーが発生しました:

CREATE TRIGGER log_patron_delete AFTER DELETE on patrons
FOR EACH ROW
BEGIN
DELETE FROM patron_info
    WHERE patron_info.pid = patrons.id
END

エラー (1046: 6 行目の END 近くの構文を確認してください) は、トリガー コードの構文に問題があることを示しています。詳しく調べると、削除されたパトロンの ID を正しく参照するには、DELETE ステートメント内で patrons.id の代わりに old.id 構文を使用する必要があることが判明しました。

修正されたトリガー コードは次のとおりです。

CREATE TRIGGER log_patron_delete AFTER DELETE on patrons
FOR EACH ROW
BEGIN
DELETE FROM patron_info
    WHERE patron_info.pid = old.id;
END

コンソール ウィンドウにトリガー コードを入力するときに、コード内の特定の文字を処理するために区切り文字 ($ や // など) の使用が必要になる場合があることに注意することが重要です。さらに、DELETE ステートメントの最後にセミコロンを忘れずに含めてください。

これらのガイドラインに従うことで、レコードが patron テーブルから削除されるたびに、トリガーは patron_info テーブルからレコードを正常に削除し、データが保証されます。データベース内の一貫性と整合性。

以上がMySQL のメインテーブルからレコードを削除した後に、従属テーブルからレコードを正しく削除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。