我希望在某些情况下触发某一列的值成为默认值。在下面的示例中,如果bIS为NULL,a则应使用定义的默认值(即“ SYSTEM”)进行设置。
CREATE TABLE t_default
( n
VARCHAR(50) NOT NULL, a
VARCHAR(50) NOT NULL DEFAULT 'SYSTEM', b
VARCHAR(50) NULL DEFAULT NULL ) ;
DELIMITER //
CREATE TRIGGER TRG_t_default_before_insert
BEFORE INSERT ON t_default
FOR EACH ROW BEGIN IF NEW.b IS NULL THEN SET NEW.a = DEFAULT(a); END IF; END //
DELIMITER ; 不幸的是,这在插入时给出错误消息“ '字段列表'中的未知列'a' ”:
INSERT INTO t_default (n) VALUES ('1'); 我发现了类似的问题,但是提供表名或db +表名不能正常工作:
CREATE TRIGGER TRG_t_default_before_insert
BEFORE INSERT ON t_default
FOR EACH ROW BEGIN IF NEW.b IS NULL THEN SET NEW.a = DEFAULT(t_default.a); -- SET NEW.a = DEFAULT(test.t_default.a); END IF; END 在这种情况下,消息略有不同:“ 字段列表中的未知表't_default' ”
另外,我尝试对列名使用反引号,但没有成功。
因此,是否有可能在触发器中获取DEFAULT列?我正在使用MySQL 5.7。
谢谢。
PS当然,我知道我可以做到 SET NEW.a = 'SYSTEM';
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。