博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
触发器错误 :消息 512,级别 16,状态 1 子查询返回的值不止一个
阅读量:6469 次
发布时间:2019-06-23

本文共 659 字,大约阅读时间需要 2 分钟。

 

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可以 等于一个结果集了。

修改如下:

 

转载于:https://www.cnblogs.com/panjun/archive/2011/10/12/2208901.html

你可能感兴趣的文章
竞争不是挤牙膏 AMD将创新拉回芯片产业竞争
查看>>
信息智能化下,传感器技术的升级能否助力安防行业崛起
查看>>
满足数字业务和云计算需求的新的广域网架构
查看>>
勒索病毒未死,传播性更猛的新病毒来袭
查看>>
同一个元素的单击事件与双击事件
查看>>
Python中必备的字符串拼接方法,你知道多少?
查看>>
并发基础笔记-(线程基础)
查看>>
京东两则回应上热搜:淘汰三类员工,取消快递员底薪引热议!
查看>>
web前端学习教程(视频教程、学习教程、学习路线、课程大纲)
查看>>
[译] 论 Rust 和 WebAssembly 对源码地址索引的极限优化
查看>>
Ubuntu系统上安装Nginx服务器以及使用方法
查看>>
正则知识点
查看>>
Position属性:static、fixed、absolute和relative的区别和用法
查看>>
6_flutter_card(卡片),计算器,状态栏隐藏
查看>>
浅入浅出容器文件系统
查看>>
Android AsyncTask讲解
查看>>
swift-24xcode8内存分配图
查看>>
webpack 打包优化
查看>>
Android RxJava:基础介绍与使用
查看>>
用这四种套路更新缓存,你会少走很多弯路!
查看>>