如何在触发器中填充NOT NULL字段?

时间:2011-07-26 16:57:53

标签: sql triggers constraints advantage-database-server

我正在使用Advantage Database Server 10.

我有一张包含2个字段的表格:

FieldA字符串不为空 FieldB字符串不为空

现在我需要一个触发器,在插入新记录时使用FieldA的值填充fieldB。

我的目的是使用“before insert”或“而不是insert”触发器,使用以下代码:

UPDATE test set test2 = ( SELECT test1 FROM __new );

但是使用两个触发器我得到错误,fieldB不能为null。 那么 - 如何使用触发器填充非空约束的字段?

1 个答案:

答案 0 :(得分:2)

我担心你不能。

在执行任何触发器之前,检查NOT NULL约束!

您必须解除约束并确保INSERT和UPDATE触发器中的值不为null,以模拟您所需的行为。

另一种解决方法是将字段test2的默认值设置为某个虚拟值(可以使用表编辑器或sp_ModifyFieldProperty完成)。

http://devzone.advantagedatabase.com/dz/WebHelp/Advantage10.1/index.html?master_sp_modifyfieldproperty.htm