MySQL Trigger不知道默认值

时间:2012-03-22 08:52:35

标签: mysql sql triggers default-value

我使用此触发器

delimiter ||
create TRIGGER column_a_to_default 
BEFORE INSERT ON `property`
FOR EACH ROW
BEGIN  
  IF NEW.primary_image = '' THEN
    SET NEW.primary_image = default(NEW.primary_image);
  END IF;
END;
||
delimiter ;

如果我插入表中,则触发器会抛出错误:

  

字段'primary_image'没有默认值。

但确实如此!

这里有什么问题?看起来触发器不知道默认值!

修改

表格创建脚本

CREATE TABLE IF NOT EXISTS `property` (
  `id` varchar(10) NOT NULL,
  `images` text NOT NULL,
  `primary_image` varchar(100) NOT NULL DEFAULT '../no-image.png',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2 个答案:

答案 0 :(得分:3)

没有default(property.primary_image)工作吗?

(获取Real表的默认值,而不是NEW保留表)

答案 1 :(得分:1)

不知怎的,它不起作用。

尝试此解决方法 -

  IF NEW.primary_image = '' THEN
    SELECT COLUMN_DEFAULT INTO @def
      FROM information_schema.COLUMNS
    WHERE
      table_schema = 'database_name'
      AND table_name = 'property'
      AND column_name = 'primary_image';
    SET NEW.primary_image = @def;
  END IF;