触发器错误 :消息 512,级别 16,状态 1 子查询返回的值不止一个
2011-10-12 17:39
417 查看
CREATE TRIGGER [dbo].[TR_UpdateXSDJMX]
ON [dbo].[STUDENT]
AFTER INSERT,UPDATE
AS
BEGIN
DECLARE @Total DECIMAL(18,2)
SELECT @Total = SUM(Score) FROM STUDENT WHERE Num=(SELECT Num FROM Inserted)
UPDATE StudentCJ SET AllScore=@Total WHERE NUM= (SELECT Num FROM Inserted)
END
这样写触发器。有个问题,update数据的时候,如果是多条记录一起更新的话,那么 select acon_acontractid from inserted 返回的是一个数据集。
就会报错,错误如标题。
(1 行受影响)
(7 行受影响)
消息 512,级别 16,状态 1,过程 TR_UpdateStudent,第 13 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
修正:
判断的时候尽量采用 if exists 或者 if upate() 之类的语法。
在执行操作的时候就使用 【in】操作符,就id可以 等于一个结果集了。
修改如下:
ON [dbo].[STUDENT]
AFTER INSERT,UPDATE
AS
BEGIN
DECLARE @Total DECIMAL(18,2)
SELECT @Total = SUM(Score) FROM STUDENT WHERE Num=(SELECT Num FROM Inserted)
UPDATE StudentCJ SET AllScore=@Total WHERE NUM= (SELECT Num FROM Inserted)
END
这样写触发器。有个问题,update数据的时候,如果是多条记录一起更新的话,那么 select acon_acontractid from inserted 返回的是一个数据集。
就会报错,错误如标题。
(1 行受影响)
(7 行受影响)
消息 512,级别 16,状态 1,过程 TR_UpdateStudent,第 13 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
修正:
判断的时候尽量采用 if exists 或者 if upate() 之类的语法。
在执行操作的时候就使用 【in】操作符,就id可以 等于一个结果集了。
修改如下:
相关文章推荐
- 在往sql server 插入数据时 报此错误“ 消息 8152,级别 16,状态 14,第 1 行 将截断字符串或二进制数据。”
- 无法打开物理文件 。操作系统错误 5:"5(拒绝访问。)"。 消息 5120,级别 16,状态 101
- 消息 8134,级别 16,状态 1,第 1 行 遇到以零作除数错误
- sql错误:消息 208,级别 16,状态 6,存储过程无效
- 出现如下错误服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值。
- SQL错误排查:子查询返回的值不止一个。子查询用作表达式时,这种情况是不允许的...
- 无法打开物理文件 。操作系统错误 5:"5(拒绝访问。)"。 消息 5120,级别 16,状态 101,
- sql错误:消息 208,级别 16,状态 6,存储过程无效
- sql错误:消息 208,级别 16,状态 6,存储过程无效
- FIX: 错误消息当您使用服务器端游标来运行 SQL Server 2005 中大型复杂查询: " " 错误 8623, 严重性 16, 状态 1: 查询处理器用尽了超出内部资源:::
- 出现如下错误服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值。
- SQL Server 2008 R2运行分布式的查询时的错误消息:"链接服务器 < 链接服务器 > 的 OLE DB 提供程序 SQLNCLI 返回消息没有事务处于活动状态
- 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,关于触发器SQL语句,完美解决
- 全文索引查询子句只包含被忽略的词,服务器: 消息 7619,级别 16,状态 1,行 1
- error:512 severity:16 state:1 触发器 错误总结
- 服务器:消息18456,级别16,状态1 用户‘sa’登录失败解决方法
- 消息 8101,级别 16,状态 1,第 1 行 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'MyShop'中的标识列指定显式值。
- 消息 245,级别 16,状态 1,— —动态SQL
- PIVOT 消息 102,级别 15,状态 1,第 5 行 '1029' 附近有语法错误
- 消息 3254,级别 16,状态 1,第 1 行 设备 '我的备份设备2(D:\丹丹\My SQL SERVER\我的备份\备份设备2.bak)' 上的卷为空。