【发布时间】:2020-09-24 05:29:15
【问题描述】:
我需要在 SQL Server 数据库中创建触发器,以便用户在表中插入一行后,它会自动从两个表中的 bill Account 导入另一个表中的账单编号,并将其插入我当前表的 userCode 列中,我的查询是:
ALTER TRIGGER [dbo].[payTrigger]
ON [dbo].[Payment] AFTER INSERT As
BEGIN
update Payment
set userCode = (
select Bill.userCode
from Bill
inner join Payment on Bill.BillAccount = Payment.BillAccount
)
问题是:查询返回所有列,如何让它导入有关 userCode 的特定字段,当我尝试插入新行时,出现此错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
【问题讨论】:
-
您说您使用 MySQL 数据库,但 SQL 语法声称您使用 MS SQL aka SQL Server。调整。
-
在
Bill表中有很多不同的userCode值与相同的BillAccount匹配。您必须根据某些条件选择其中之一 - 例如,您可能会在子查询中使用select MIN(Bill.userCode)得到最小化。 -
@Akina 非常感谢 Akina,我添加了 select MIN(Bill.userCode) 但它为所有行返回一个 userCode,我需要根据 BillAccount 返回
-
添加适当的 WHERE - 比如
WHERE Payment.ID = INSERTED.ID。 -
@Akina 非常感谢您,这是工作,您可以发布您的答案以将其标记为未来用户的答案吗?非常感谢
标签: sql-server database triggers subquery