子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,?
tab_pers_info
pers_id 主键
pers_no
pers_name
图书借阅登记
id 主键
学号
姓名
现在我要级联修改,写了这样一个触发器
alter trigger alter_student_basic
on dbo.tab_pers_info
for update
as if update(pers_no) or update(pers_name)
set nocount on
declare @student_number varchar(20)
set @student_number=(select pers_no from deleted)
declare @学号 varchar(20)
set @学号=(select pers_no from inserted)
declare @姓名 varchar(20)
set @姓名=(select pers_name from inserted)
update 图书借阅登记 set 借阅人学号=@学号,借阅人姓名=@姓名 where 借阅人学号=@student_number
如果在图书借阅登记表里有重复学号,修改tab_pers_info时就会出现返回的值多于一个。当子查询跟随在 =、!=、 <、 <=、> 、> = 之后,或子查询用作表达式时
没有重复学号时可以修改
这个怎么解决?
------解决方案--------------------alter trigger alter_student_basic
on dbo.tab_pers_info
for update
as if update(pers_no) or update(pers_name)
update A set 借阅人学号=B.pers_no,借阅人姓名=B.pers_name
From 图书借阅登记 Inner Join Inserted B On A.借阅人学号=B.pers_no
GO