使用触发器中止 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中文网其他相关文章!