子查询返回的值不止一个.当子查询跟随在 =,!=,<,<=,>,>= 之后,或子查询用作表达式时,这种情况是不允许的.
这是我写的语句,要实现的功能是,在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 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
” 展开
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 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
” 展开
2个回答
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 )
就是把 订单全部检索出来啦
可简单修改为
=(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 )
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询