开发者社区> 问答> 正文

我希望在某些情况下触发某一列的值成为默认值。在下面的示例中,如果bIS为NULL,a则应使用定义的默

我希望在某些情况下触发某一列的值成为默认值。在下面的示例中,如果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';

展开
收起
保持可爱mmm 2019-11-15 11:15:39 305 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载