【问题标题】:mysql trigger on a null value being insertedmysql 在插入空值时触发
【发布时间】:2011-08-14 21:14:40
【问题描述】:

我想要一个特定字段的 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作为默认值?

标签: mysql triggers null default default-value


【解决方案1】:

使用not null default 0 声明该列,而不是稍后使用触发器。

当 mysql 已经在处理这种情况时,为什么我们需要在这里使用触发器?

您可以使用 alter 命令来更新您对列的定义

ALTER TABLE example MODIFY parent_id INT(11) NOT NULL DEFAULT 0

【讨论】:

    【解决方案2】:

    除了 Shakti Singh 与默认值完全正确之外,您必须将 NULL 值与 IS 进行比较,而不是 =
    应该是IF parent_id IS NULL

    【讨论】:

      【解决方案3】:

      我同意将 Null 简单地设置为 0 的示例,然后使用“默认值”就可以了,但是如果您追求的值是可变的并且不能是默认值怎么办?例如:

      IF `Creator` Is NULL THEN
         SET `Creator` = current_user();
      END IF
      

      对于这种类型的用例,或需要查找的东西,您将无法使用 Default。

      【讨论】:

        猜你喜欢
        • 2013-01-21
        • 2016-03-30
        • 2013-09-13
        • 2018-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-14
        相关资源
        最近更新 更多