gpt4 book ai didi

mysql - 我如何在mysql中编写一个触发器来在插入之前检查重复记录

转载 作者:行者123 更新时间:2023-11-29 20:26:36 25 4
gpt4 key购买 nike

用户(ID、公司、姓名)

这是我的表架构。我应该如何编写一个触发器来在插入新行之前检查重复项。我需要检查传入的数据是否与传入的记录重复。如果传入记录已存在,则不应将该记录插入到表中。如果它不重复,则应插入该记录!

下面是我尝试过的触发器,但它在“最后结束”行给出了错误

DELIMITER $$
CREATE TRIGGER userDuplicate
BEFORE INSERT ON `users` FOR EACH ROW

BEGIN
DECLARE recordId VARCHAR(999);

SET recordId = (SELECT id FROM users WHERE company= NEW.companyAND name = NEW.name);

IF recordId IS NOT NULL
THEN
INSERT INTO users (company,name) VALUES (NEW.name,NEW.company);
END IF;
END;
$$ DELIMITER;

最佳答案

根据此处接受的答案:How to abort INSERT operation in MySql trigger? 您不能让 MySQL 触发器取消 INSERT。这在 PostgreSQL 上很容易(BEFORE INSERT 触发器仅返回 NULL),但 MySQL 无法处理。

不过,您可以做的是INSERT IGNORE:

INSERT IGNORE INTO users (company, name) 
VALUES ('ABC','DEF');

关于mysql - 我如何在mysql中编写一个触发器来在插入之前检查重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39284019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com