急死我了!一个触发器的问题!麻烦进来帮个忙吧~(100分)

  • 主题发起人 hawkeyes_yq
  • 开始时间
H

hawkeyes_yq

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟写了一个A表For Delete 的触发器(SQLServer2000下的),可是不知道什么原因,我用SQL查询分析器来删除A表中的记录的时候,我的触发器是可以用的,即:可以根据删除A表中的记录,触发B表,从而删除B表里的记录。
但是我在Delphi的代码里删除A表记录的时候,总是说 Update affected more than 1 record.不知道为什么。
另外说明:我在A表中删除的是1条记录,B表里会被删除2条以上的记录(满足条件的)
附上触发器:
ALTER Trigger Trig_PurviewDelete On A
for Delete
as
if exists
(select c.Formid from deleted a, Sy_UserGroup b, Sy_UserPurview c
where a.PurviewGroupID=b.PurviewGroupID and b.UserID=c.UserID and
c.FormID=a.FormID )

Delete B from deleted a, Sy_UserGroup b, Sy_UserPurview c
where a.PurviewGroupID=b.PurviewGroupID and b.UserID=c.UserID and
c.FormID=a.FormID

请各位帮忙看看,那里有问题
 
这样可能不好检查出来,因为别人不太熟悉你的表结构.
给个建议:你再在程序中用一条删除这条记录的SQL语句来
试试,因为这样直接发送SQL语句到服务器端,可以说是最安全
的方法,然后你在事件察看器中看该SQL语句在SQL SERVER中执行
情况估计就可以解决这个问题
 
Delete From 后只能删除一表数据,你的语法虽没有错误,但有逻辑错误,看看
Delete 语句的语法吧
 
To hbezwwl:非常感谢!你说的办法我试过了,没有问题。我想问一下,为什么直接用DataSet.Delete会有
这种情况出现?
 
To liujunzhang: 我删除的是一个表的。我测试过了,不是触发器的问题,问题出在Delphi
里边。现在我按照hbezwwl说的方法试过了,没有问题了!谢谢你们!
 
呵呵,我也是在做项目时碰到过种情况,所以只是这样解决一下,
具体的原因需要有空时再研究一下,
//有时,能够把问题解决再说.
 
接受答案了.
 
顶部