如果未指定,则创建一个递增id的触发器

时间:2015-07-07 09:29:55

标签: mysql triggers

当我在表中插入一行时,如果未指定id,我希望id的行为类似于AUTO_INCREMENT。我尝试用触发器做了一次尝试,但我不能让它工作。它总是尝试将id设置为0.这是我的尝试:

CREATE TRIGGER inc_id BEFORE INSERT ON project
FOR EACH ROW BEGIN    
    DECLARE new_id integer;
    IF NEW.id is null THEN
       SELECT MAX(a.id)+1 INTO new_id FROM (SELECT id FROM project UNION SELECT 0 id) a;
       SET NEW.id = new_id;
    END IF;
END

然后我尝试插入一行:

INSERT INTO project(projekt) VALUES("test")

我也尝试过:

SELECT COALESCE(MAX(id),0)+1 INTO new_id FROM project

这是一个更简单的选择,但问题仍然存在。

1 个答案:

答案 0 :(得分:0)

我只使用AUTO_INCREMENT解决了这个问题。显然它可以作为默认值。