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 展开
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 展开
1个回答
展开全部
后面的一个错误也是很明显的呀,如果引用多个表,用下面的格式
update table set 列=值 from table1,table2
where ....
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 ........
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询