sql 触发器 子查询返回的不止一个值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 触发器 子查询返回的不止一个值相关的知识,希望对你有一定的参考价值。

ALTER TRIGGER 班级表人数添加
ON dbo.学生信息表
FOR insert
AS
begin
declare
@人数 int,
@班级编号 int
set @班级编号=(SELECT 班级编号 FROM inserted)
set @人数=(SELECT COUNT(学生信息表.学号) FROM 学生信息表 INNER JOIN 班级表 ON 学生信息表.班级编号 = 班级表.班级编号
WHERE (学生信息表.班级编号 =@班级编号))
update 班级表 set 人数=@人数 where 班级编号=@班级编号
end
---------------------
当我批量导入数据的时候出现子查询返回的不止一个值,单独插入一条数据不会有问题
下面的~不可以~还是不行,在数据库里面导入可以~通过我的程序导入就不可以了~

当然有问题,你设的参数只能取到一个值,所以如果你插入一行就没有问题,超过一行就不对。

ALTER TRIGGER 班级表人数添加
ON dbo.学生信息表
FOR insert
AS
begin
update a set a.人数=b.人数
from 班级表 a,(select 班级编号,count(*) 人数 from inserted group by 班级编号) b
where a.班级编号=b.班级编号
end
参考技术A ALTER TRIGGER 班级表人数添加
ON dbo.学生信息表
FOR insert
AS
begin
declare @人数 int
declare @班级编号 int
set @人数=(SELECT COUNT(学生信息表.学号) FROM 学生信息表 INNER JOIN 班级表 ON 学生信息表.班级编号 = 班级表.班级编号
WHERE (学生信息表.班级编号 =@班级编号))
declare cur_wa cursor for
SELECT 班级编号 FROM inserted
open cur
fetch next from cur into @班级编号
while @@fetch_status=0
begin
update 班级表 set 人数=@人数 where 班级编号=@班级编号
fetch next from cur
end
close cur
end
你试一试!

sqlserver 表 无法更新和删除 子查询返回的值不止一个

这是语句
delete from khppzd
where KHPPZD_XTDWBH is null
and KHPPZD_KHMC not like '%非协议%'
and KHPPZD_JS in('1','2')
这是错误提示
消息 512,级别 16,状态 1,过程 khppzd_update,第 19 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
无法删除和更新,select正常,请大神指点

参考技术A 你确定是那个delete的问题吗??
这个delete语句和错误提示的khppzd_update有啥关系?又没有子查询...

应该是其它地方的问题,再检查一下“过程 khppzd_update,第 19 行子查询返回的值不止一个”

祝你成功!

以上是关于sql 触发器 子查询返回的不止一个值的主要内容,如果未能解决你的问题,请参考以下文章

SQL server 建立的触发器子查询返回值不唯一,需要用多个返回值如何操作

SQL问题,子查询返回的值不止一个!

sql 问题子查询返回的值不止一个。

sql 子查询返回的值不止一个怎么解决?

sql提示子查询返回的值不止一个,求解如何修改,谢谢。

SQL Server 触发器:子查询返回超过 1 个值