sql更新触发器代码报错?无法绑定由多个部分组成的标识符 "Inserted.学号/"Inserted.姓名"。"。

正确的:createTRIGGER[student59]ON[dbo].[学生总信息]forupdateASbeginupdate班级信息SET[学号]=(select学... 正确的:
create TRIGGER [student59]
ON [dbo].[学生总信息]
for update
AS
begin
update 班级信息
SET [学号] = (select 学号 from Inserted)
,[姓名] = (select 姓名 from Inserted)
where 姓名=(select 姓名 from Deleted )
end
报错的:
create TRIGGER [student59]
ON [dbo].[学生总信息]
for update
AS
begin
update 班级信息
SET [学号]=Inserted.学号
,[姓名]=Inserted.姓名
where 姓名=(select 姓名 from Deleted )
end
展开
 我来答
cjsaohan
2013-07-23 · TA获得超过204个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:235万
展开全部
后面的一个错误也是很明显的呀,如果引用多个表,用下面的格式

update table set 列=值 from table1,table2
where ....
追问
谢谢您的回答。我问的是为什么“Inserted.学号”语句不能代替  “select 学号 from Inserted”。你的引用多个表,能举个例子吗?比如银行总存款,等于两个银行的和,是不是这样写?update   汇总表 set  总额 =(  select 余额 from 工行)+(select 余额 from 农行) 是这样么??像你的代码,用在什么地方? 谢谢。
追答
这种情况建议的写法是先定义变量,并从deleted或inserted表中获取值

declare @id int
declare @other varchar(20)
.....

select @id=id,@other=other ..... from inserted

然后做update操作

update table set id=@id ........
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式