如何在插入

时间:2016-09-02 03:48:32

标签: mysql sql database triggers relational-database

用户(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;

1 个答案:

答案 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');