背景:
このシナリオの目標は、一意のエントリの組み合わせを確実に実行することです。 URL とパラメータ文字列は、MySQL テーブル内で一意性を維持します。ただし、パラメータ文字列の長さが MySQL のキーの長さ制限を超えているため、一意のキー制約を使用できません。
トリガーの実装:
この問題に対処するには、トリガーで次のことができます。一意性制約を強制するために使用されます。トリガー コードは、挿入操作を許可する前に重複エントリをチェックします。
重複エントリの処理:
トリガー コードには 2 つの重要な部分が含まれます:
中止/例外の発生C#:
重複エントリが検出されたときに例外をスローするには、次のコードを追加できます:
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Duplicate entry detected';
改善されたソリューション:
より高度なソリューションでは、MySQL の SIGNAL 関数を利用し、カスタム エラー メッセージと例外のトラップを可能にします。このアプローチの概要は、提供されたコードで説明されています。
CREATE TRIGGER `TestTable_SomeTrigger` BEFORE UPDATE ON `test_table` FOR EACH ROW BEGIN DECLARE msg VARCHAR(255); IF (SomeTestToFail = "FAIL!") THEN set msg = "DIE: You broke the rules... I will now Smite you, hold still..."; SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg; END IF; -- Do any other code here you may want to occur if it's all OK or leave blank it will be -- skipped if the above if is true END$$
このメソッドは、C# コードでインターセプトして処理できるカスタム エラー メッセージを返します。
以上がトリガーを使用して MySQL テーブルの重複エントリを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。