是否可以在触发此INSERT语句触发的上下文中检查某个字段是否包含在INSERT语句中?
例如,假设customers
表包含以下字段:customerid INT NOT NULL
和isCrazy BIT(1) DEFAULT b'1'
。此表在插入之前有一个触发器,有必要检查INSERT语句是否包含isCrazy
字段。
INSERT INTO customers (customerid) VALUES (1);
OR
INSERT INTO customers (customerid, isCrazy) VALUES (1, b'0');
如果字段已定义,则应继续保存,否则需要采取某些措施来确定应插入此字段的正确值;这不一定等于默认值。
我遇到的问题是,如果isCrazy
字段未包含在INSERT语句中,则NEW.isCrazy
保留默认值(b' 1') ;就像插入的值实际上是这样定义的一样。是否有可能将两个案件区分开来?
答案 0 :(得分:1)
我认为没有任何明确的方法来判断该值是明确提供还是来自默认值。
我能想到的唯一选择是使用应该永远不应由应用程序代码明确提供的默认值。然后你可以测试NEW.option
是否等于这个;如果是,则将它设为默认值,并且触发器可以将其替换为您真正想要的默认值。