SQL语句问题,高手请指教,能者得分!!! ( 积分: 50 )

  • 主题发起人 主题发起人 多多帮助
  • 开始时间 开始时间

多多帮助

Unregistered / Unconfirmed
GUEST, unregistred user!
删除时出现如下错误(有触发器)<br>declare&nbsp;@ccc&nbsp;int,declare&nbsp;@ckid&nbsp;int<br><br>&nbsp;&nbsp;set&nbsp;@ccc=(select&nbsp;sl&nbsp;from&nbsp;deleted)<br>&nbsp;&nbsp;update&nbsp;d1&nbsp;set&nbsp;kucun=kucun&nbsp;-&nbsp;@ccc&nbsp;where&nbsp;ckid&nbsp;=&nbsp;@ckid<br><br>子查询返回的值多于一个。当子查询跟随在&nbsp;&nbsp;&nbsp;=、!=、&nbsp;&lt;、&nbsp;&lt;=、&nbsp;&gt;、&nbsp;&gt;=&nbsp;&nbsp;&nbsp;之后,或子查询用作表达式时,这种情况是不允许的。&nbsp;<br>语句已终止。
 
用@@ROWCOUNT判断先<br>返回受上一语句影响的行数<br>示例<br>下面的示例执行&nbsp;UPDATE&nbsp;语句并用&nbsp;@@ROWCOUNT&nbsp;来检测是否有发生更改的行。<br>UPDATE&nbsp;authors&nbsp;SET&nbsp;au_lname&nbsp;=&nbsp;'Jones'<br>WHERE&nbsp;au_id&nbsp;=&nbsp;'999-888-7777'<br>IF&nbsp;@@ROWCOUNT&nbsp;=&nbsp;0<br>&nbsp;&nbsp;&nbsp;print&nbsp;'Warning:&nbsp;No&nbsp;rows&nbsp;were&nbsp;updated'
 
你一次删除多条记录,所以set&nbsp;@ccc=(select&nbsp;sl&nbsp;from&nbsp;deleted)这里出错了。要改正的话主要看你的二个表有什么关系。
 
这2个表没有关系,但这两个表跟其它表有关系.<br>set&nbsp;@ccc=(select&nbsp;sl&nbsp;from&nbsp;deleted)这里错了<br>是不是得用游标?怎么改成游标呢?谢谢
 
比如你删除了3条记录,你这三条记录应对应修改d1表中的一些记录吧,哪这里条件是什么,从你上面看只有一个ckid&nbsp;=&nbsp;@ckid,但不知道你这里是什么关系,如何来的
 
就是删除更新kucun表中的kucun数量<br>这个kucun数量就是当前的kucun数量-select&nbsp;sl&nbsp;from&nbsp;deleted然后还要对应kucun表的中仓库id(就是ckid)<br>这个ckid也是&nbsp;set&nbsp;@ckid=(select&nbsp;ckid&nbsp;from&nbsp;deleted)<br>来的
 
CREATE&nbsp;TRIGGER&nbsp;[TRIGGERDELKC]&nbsp;ON&nbsp;dbo.d_purchase_list<br>FOR&nbsp;DELETE&nbsp;<br>AS<br>&nbsp;&nbsp;declare&nbsp;@b_kucun&nbsp;real&nbsp;,&nbsp;@b_hpid&nbsp;varchar(20),&nbsp;@b_ckid&nbsp;int<br>&nbsp;&nbsp;set&nbsp;@b_kucun=(select&nbsp;sl&nbsp;from&nbsp;deleted)<br>&nbsp;&nbsp;set&nbsp;@b_hpid=(select&nbsp;spid&nbsp;from&nbsp;deleted)<br>&nbsp;&nbsp;set&nbsp;@b_ckid=(select&nbsp;ckid&nbsp;from&nbsp;deleted)<br>&nbsp;&nbsp;update&nbsp;d_stock&nbsp;set&nbsp;kucun=kucun&nbsp;-&nbsp;@b_kucun&nbsp;where&nbsp;stockid&nbsp;=&nbsp;@b_ckid&nbsp;and&nbsp;hpid&nbsp;=&nbsp;@b_hpid<br>这是全部的
 
CREATE&nbsp;TRIGGER&nbsp;[TRIGGERDELKC]&nbsp;ON&nbsp;dbo.d_purchase_list<br>FOR&nbsp;DELETE&nbsp;<br>AS<br>&nbsp;&nbsp;update&nbsp;d_stock&nbsp;set&nbsp;kucun=kucun&nbsp;-&nbsp;a.sl&nbsp;from&nbsp;deleted&nbsp;as&nbsp;a&nbsp;where&nbsp;stockid&nbsp;=&nbsp;a.ckid&nbsp;and&nbsp;hpid&nbsp;=&nbsp;a.spid&nbsp;<br>你测试看,我不记得里面是否可以这样使用
 
我狂晕.我真服了你了,谢谢了.不知可不可以加你QQ啊.谢谢<br>你这用的不是游标吧!
 
不是。当然可以
 
QQ多少啊,我加你后结贴,谢谢
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部