mysql - 创建一个触发器,如果​​没有指定,它会增加一个 id

标签 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

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

最佳答案

我通过使用 AUTO_INCREMENT 解决了这个问题。显然它作为默认值工作。

关于mysql - 创建一个触发器,如果​​没有指定,它会增加一个 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31264807/

相关文章:

MySQL:如何增加general_log中查询的空间?

mysql - 如果历史表中的字段发生变化,如何更新它?使用触发器

mysql - 在第三个表上插入后,触发器将元组插入到另一个表中的每一行的表中

MYSQL 触发器 - 如何存储计算字段的结果

sql-server-2008 - 使用 GETDATE 触发时出现问题

mysql - 安全地使用返回 URL

MySQL SELECT all 除了两列有特定数据的地方

mysql - mysql触发器中的更新不起作用

MySQL 对多个表中的行进行计数,返回完全相同的数量

mysql - Docker Compose Sql DB 图像连接错误