ホームページ >データベース >mysql チュートリアル >重複エントリを防ぐためにトリガーを使用して MySQL INSERT 操作を中止または許可する方法は?

重複エントリを防ぐためにトリガーを使用して MySQL INSERT 操作を中止または許可する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-12 12:15:28284ブラウズ

How to Abort or Allow MySQL INSERT Operations Using Triggers to Prevent Duplicate Entries?

トリガーによる MySQL INSERT オペレーションの中止

URL とパラメーター文字列の両方に基づいてテーブル内の重複エントリを防ぐために、トリガーを実装できます。 。このトリガーは、受信した INSERT 操作によって重複が生じるかどうかを評価し、必要に応じて例外をスローするか、それに応じて挿入を許可します。

操作の中止

の場合「... ABORT/C# に例外をスローする ...」の部分では、SIGNAL を使用できます。ステートメント:

SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = 'Duplicate entry: URL and parameter string already exists.';

これにより、C# コードがキャッチできる MySQLException が発生します。

挿入を許可します

「... 「挿入を許可する...」部分を使用するには、単に SIGNAL ステートメントを省略します。重複エントリが検出されない場合、挿入は通常どおり続行されます。

改訂されたトリガー コード

これは、中止ロジックと挿入許可ロジックの両方を組み込んだ変更されたトリガー コードです。 :

CREATE TRIGGER urls_check_duplicates
BEFORE INSERT ON urls
FOR EACH ROW

BEGIN
DECLARE num_rows INTEGER;

SELECT COUNT(*)
INTO num_rows
FROM urls
WHERE url = NEW.url AND params = NEW.params;

IF num_rows > 0 THEN
   SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = 'Duplicate entry: URL and parameter string already exists.';
END
END

以上が重複エントリを防ぐためにトリガーを使用して MySQL INSERT 操作を中止または許可する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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