帮忙看看这段东东出了什么问题

koh_hou 2002-09-13 04:56:40

CREATE TRIGGER DIU
ON a
FOR DELETE,INSERT,UPDATE
AS
BEGIN
delete from B where Name =(select ID from deleted)
insert B(Name) select ID from inserted
update B
set P2 = substring((select me from inserted),2,len((select me from inserted))-2),
PD = substring((select dur from inserted),1,8)
from inserted where Name =(select ID from inserted)
END


CREATE TRIGGER DIU
ON HBC.dbo.media
FOR DELETE,INSERT
AS
DECLARE @TS1 varchar(80)
DECLARE @TS2 varchar(18)
DECLARE @TS3 varchar(18)
BEGIN
set @TS1 = (select ID from inserted)
set @TS2 = (select me from inserted)
set @TS3 = (select dur from inserted)
delete from B where Name =(select ID from deleted)
insert B(Name,P2,PD)
values(@TS1,
substring(@TS2,2,len(@TS2)-2),
substring(@TS3,1,8))
END




这两段代码都产生同一个错误
(我是在数据库里直接操作的,而不是通过什么软件改的)
添加、删除都正常,可是要Update就一定要先关闭数据集才行
如果我刚添加完一条(肯定已经添加完成了),然后马上再修改它,就会出现
“无法为更新集定位:一些值可能已在最后读取后改变”
谁知道该怎么办啊?


...全文
80 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
koh_hou 2002-09-16
  • 打赏
  • 举报
回复
人呢......
koh_hou 2002-09-14
  • 打赏
  • 举报
回复
你能写的具体一点吗?
caiyunxia 2002-09-14
  • 打赏
  • 举报
回复
@@rowcount>1
子查询中可能返回多条记录,在数据哭中操作肯定出错,不要直接为变量付值

如 INSERTED 中有多条记录
set @TS1 = (select ID from inserted)


koh_hou 2002-09-14
  • 打赏
  • 举报
回复
怎么没人帮忙啊......
koh_hou 2002-09-13
  • 打赏
  • 举报
回复
而且我不只是要监听一个字段啊
koh_hou 2002-09-13
  • 打赏
  • 举报
回复
2- OpenVMS(半知半解)
什么意思?
加在哪里?
怎么加?
OpenVMS 2002-09-13
  • 打赏
  • 举报
回复
add:
IF Update(yourColumn) ...

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧