查看: 1219|回复: 2
|
关于MS SQL的TRIGGER问题.
[复制链接]
|
|
CODE:
if update(Sts)
begin
insert iss_MaintAudit(TableName, Field, PriKey, Action, OldVal, NewVal, UserId,
CreationDate)
select 'iac_Card', 'Sts', a.CardNo, 'U', b.Sts, a.Sts, system_user, getdate()
from Inserted a, Deleted b
where b.IssNo = a.IssNo and b.CardNo = a.CardNo and b.Sts <> a.Sts
end
我写了一个当Sts (CARD Sts)被更改(Updated), 就会Trigger加一个更新记录去MaintAudit 的TABLE. 但是我发现这个TRIGGER时行时不行.我个人TEST的时候没问题. 但是在客户回复的EMAIL当中就出现这样的问题.想知道有谁面对过这样的问题? 还是因为MS SQL的PERFORMANCE 问题? 电脑的PERFORMANCE问题?
同样的情况我模拟了几次. 更改Card Status, 然后看有没有记录.....我发现没问题.....
疑问1: 当我UPDATE STS时, 如果MaintAudit有别人先做INSERT. 那么我的TRIGGER 还会RUN吗? 会等呢? 还是直接RETURN ERROR?
[ 本帖最后由 lyfatt3 于 15-1-2007 11:24 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 18-1-2007 09:46 AM
|
显示全部楼层
当你发现没问题的时候... 你要开始想想是不是客户的问题... |
|
|
|
|
|
|
|
发表于 1-2-2007 12:43 AM
|
显示全部楼层
不鼓励用TRIGGER...因为这是造成DEADLOCK的主要原因之一,也就是会发生你所面对的问题.而DEADLOCK讨厌的地方,就是很难SIMULATE或模拟出来,也不知道那里出现DEADLOCK...
可以的话,全部换去SP,还有尽量利用NOLOCK或其他LOCKING MECHANISM来防止DEADLOCK |
|
|
|
|
|
|
| |
本周最热论坛帖子
|