佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1217|回复: 2

关于MS SQL的TRIGGER问题.

[复制链接]
发表于 15-1-2007 11:12 AM | 显示全部楼层 |阅读模式
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 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 18-1-2007 09:46 AM | 显示全部楼层
当你发现没问题的时候... 你要开始想想是不是客户的问题...
回复

使用道具 举报

发表于 1-2-2007 12:43 AM | 显示全部楼层
不鼓励用TRIGGER...因为这是造成DEADLOCK的主要原因之一,也就是会发生你所面对的问题.而DEADLOCK讨厌的地方,就是很难SIMULATE或模拟出来,也不知道那里出现DEADLOCK...

可以的话,全部换去SP,还有尽量利用NOLOCK或其他LOCKING MECHANISM来防止DEADLOCK
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 26-8-2025 11:49 PM , Processed in 0.124957 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表