用户(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;
答案 0 :(得分:0)
根据此处接受的答案: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');