我想要一个特定字段的mysql触发器。当NULL
值插入此字段时,我想用默认值替换它。我知道这段代码不正确,但它可以让你知道我想要什么。
CREATE TABLE IF NOT EXISTS example(
id INT NOT NULL AUTO_INCREMENT,
parent_id INT NOT NULL
);
CREATE TRIGGER insert_parentId_trigger BEFORE INSERT ON example
FOR EACH ROW BEGIN
IF parent_id = NULL THEN
SET parent_id = 0;
END IF
END;
答案 0 :(得分:4)
使用not null default 0
声明该列,而不是稍后使用触发器。
当mysql已处理该条件时,为什么我们需要在这里使用触发器?
您可以使用alter命令更新列的定义
ALTER TABLE example MODIFY parent_id INT(11) NOT NULL DEFAULT 0
答案 1 :(得分:2)
我同意将Null简单地设置为0的示例,然后使用“默认”就可以了,但是如果你的值是变量并且不能是默认值怎么办?例如:
IF `Creator` Is NULL THEN
SET `Creator` = current_user();
END IF
对于此类用例或需要查找的内容,您将无法使用默认值。
答案 2 :(得分:0)
除了Shakti Singh使用默认值完全正确之外,您必须将NULL
值与IS
进行比较,而不是=
。
它应该是IF parent_id IS NULL