MySQL トリガーでの INSERT 操作の中止: URL パラメーターのペアに対する一意の制約の達成
URL とパラメーター文字列の組み合わせに一意性を適用するにはMySQL テーブルでは、トリガーを使用できます。ただし、エントリの重複を防ぐためにトリガーでの挿入操作を中止するには、特別な処理が必要です。この記事では、例外をスローし、トリガーでの挿入を条件付きで許可する手順について説明します。
C# への例外のスロー
重複エントリ エラーを C# コードに通知するにはを使用すると、トリガー内で MySQL の SIGNAL ステートメントを利用できます。以下は、urls_check_duplicates トリガーの更新されたコード スニペットです:
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 '45000' SET MESSAGE_TEXT = 'Duplicate URL-parameter pair found'; ELSE ... Allow insert ... END
C# コードでは、MySqlException クラスを使用してトリガーによってスローされたエラーを処理できます:
try { // Execute INSERT statement } catch (MySqlException ex) { if (ex.Message.Contains("Duplicate URL-parameter pair found")) { // Handle duplicate entry error } }
条件付き挿入許可
存在する場合にのみ挿入を許可します重複したエントリはありません。トリガー コード内の ELSE ブロックを削除するだけです。次のコードは、一意の URL パラメーター ペアのみを挿入します。
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 '45000' SET MESSAGE_TEXT = 'Duplicate URL-parameter pair found'; END
トリガーで SIGNAL と条件付き実行を組み合わせて使用することにより、MySQL テーブル内の URL パラメーター ペアに一意の制約を効果的に適用できます。
以上がC# で MySQL トリガーを使用して URL パラメーターのペアの一意性を強制し、重複エントリを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。