【发布时间】:2012-05-12 17:45:19
【问题描述】:
我发现sql server 中只有after 而不是triggers。并且修改插入的 pesudo 表中的值是非法的。然后我的问题出现了:如果我想检查将要插入到我的表中的数据,并且当数据违反我的约束时,我应该将这些值修改为默认值,该怎么做?插入后如何更新值?但是,如果我的表中没有唯一的主键或列,我如何找到刚刚插入的行然后更新它?
【问题讨论】:
-
INSTEAD OF触发器的要点是您可以“捕获”该操作(例如INSERT),然后执行一些操作而不是该正常操作。所以你可以读出这些值,修改它们,然后在你的INSTEAD OF INSERT触发器中调用一个INSERT来插入修改后的数据 -
这样做的问题是,如果表结构发生变化,您还需要考虑修改触发器。相反,Oracle 允许您更新更符合逻辑的“插入”对象(“新”)的等效项。
标签: sql-server-2008 tsql