假设我有一个表my_table(id, x, y)
。如果x
已经是null
,我想写一个触发器以防止更新y
列并将其设置为non-null
值。由于SQL Server没有更新之前的触发器,这怎么办呢?显然我们可以使用instead of
触发器来实现这个目的,但是我们如何检查旧的和当前的值并决定是否应该提出错误或让更新正常执行?如何为SQL Server编写此触发器?
例子:
让我们假设我们有这个行中的DB:
1, null, null
那么这应该失败(提高误差)
update my_table set y = 'blah' where id = 1;
但是,这应该会成功:
update my_table set y = null where id = 1;
我知道这个例子不是很有意义,但它与我试图实现的类似。
忍者 - 仅仅是明确的,如果'x'是'null',你是什么想要发生在'y'?将其设置为任意的非空值? – LittleBobbyTables 2010-11-10 02:25:37
@LittleBobbyTables:请参阅更新的问题。 – Behrang 2010-11-10 02:41:46