**这个触发器执行过程中出现了子查询返回值不止一个的问题 **
应该怎么解决呢?
ALTER TRIGGER [dbo].[limit_buy] ON [dbo].[ord]
AFTER INSERT
AS
BEGIN
DECLARE @lim INT;
DECLARE @num INT
DECLARE @id INT
SET @lim=(SELECT d_stock FROM dish,ord WHERE ord.o_did=dish.d_id);
SET @num=(SELECT o_num FROM INSERTED)
SET @id=(SELECT o_did FROM INSERTED)
if (@lim is NOT NULL AND @num>@lim)
UPDATE ord SET o_num=@lim WHERE o_did=@id
END
SET @lim=(SELECT d_stock FROM dish,ord WHERE ord.o_did=dish.d_id);
设置更多条件或者处理表内数据,确保语句返回一个d_stock值,保证 update 语句set o_num=一个值。
SET @id=(SELECT o_did FROM INSERTED)
设置更多条件或者处理表内数据,确保语句返回一个 o_did值。保证 where条件 o_did=一个值 。
一楼的回答如果解决不了,那就在每个语句后面加一句 limit 1吧,这样返回的一定就只有一个值了