在插入空值时触发mysql

时间:2011-04-28 16:34:10

标签: mysql triggers null default default-value

我想要一个特定字段的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;

3 个答案:

答案 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