我使用此触发器
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;
答案 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;