我是创建触发器的新手。我正在尝试使用tblAccounts.HotNote创建一个更新tblServiceOrders.GeneralSymptoms的触发器,其中tblAccounts.Number = tblServiceOrders.AccountNumber以及每当向tblServiceOrders添加新行时的位置。这是我到目前为止所做的。
ALTER TRIGGER [dbo].[HOTNOTE_update] ON [dbo].[tblServiceOrders]
AFTER INSERT
AS
BEGIN
UPDATE tblServiceOrders tblAccounts.AccountNumber = tblServiceOrders.AccountNumber
SET GeneralSymptoms =
(
SELECT HotNote FROM tblAccounts, tblServiceOrders
WHERE tblAccounts.AccountNumber = tblServiceOrders.AccountNumber
)
FROM tblServiceOrders
WHERE tblServiceOrders.SOType = 'BE Maintenance' OR tblServiceOrders.SOType = 'DD Maintenance'
END
答案 0 :(得分:1)
读取代码,每次插入记录时,都会更新整个表格,这是非常高的成本。我想你真的不想那样做。如果您只想更新刚刚插入的记录,那么为什么不在插入之前使数据准备就绪并直接插入。
答案 1 :(得分:0)
假设您正在使用SQL Server,看起来您的UPDATE
语句正在尝试执行以下操作:
UPDATE so
SET so.GeneralSymptoms = a.hotnote
FROM tblServiceOrders so
JOIN tblAccounts a ON so.AccountNumber = a.AccountNumber
WHERE so.SOType = 'BE Maintenance'
OR so.SOType = 'DD Maintenance'
这将使用这些匹配条件更新表中的所有记录。您可能需要考虑仅使用插入的记录 - 取决于您的数据库结构。