子查询返回的值不止一个.当子查询跟随在 =,!=,<,<=,>,>= 之后,或子查询用作表达式时,这种情况是不允许的.

这是我写的语句,要实现的功能是,在Orders表中创建触发器tr_deleteorder,实现在Orders表中删除订单号为'200708021533'的订单记录时,将该... 这是我写的语句,要实现的功能是,在Orders表中创建触发器tr_deleteorder,实现在Orders表中删除订单号为'200708021533'的订单记录时,将该订单包含的详细信息(在OrderDetails表中)全部删除
create trigger tr_deleteorder
on Orders
for delete
as
begin
delete
from OrderDetails
where o_ID=(select o_ID from Orders)
end
delete
from Orders
where o_ID='200708021533'
执行后错误提示为“
消息 512,级别 16,状态 1,过程 tr_deleteorder,第 6 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
展开
 我来答
匿名用户
2012-12-19
展开全部
=(select o_ID from Orders)

就是把 订单全部检索出来啦

可简单修改为
=(select o_ID from deleted)

注: deleted 就是 触发器里面, 当前删除的数据.

----------

但是上面的写法
如果你
DELETE FROM Orders where o_ID LIKE '200708%'
一次删除多行数据的时候, 还是要报错的。

修改办法是:

delete
from OrderDetails
where o_ID in (select o_ID from deleted )
猿看生活
2012-12-19 · 超过25用户采纳过TA的回答
知道答主
回答量:121
采纳率:100%
帮助的人:50.1万
展开全部
你查询中返回的值多于两条记录以上,你可以加个TOP 1,或者查看一下,为什么能查询出多条记录
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式