1
我有一個觸發器,它是如下:TSQL觸發行爲異常
ALTER TRIGGER [trigger_CATEGORY_VALUE_ID] ON [dbo].[tblA]
FOR UPDATE
AS
SET NOCOUNT ON
IF (UPDATE([CATEGORY_VALUE_ID]))
BEGIN
INSERT INTO [dbo].[htblB]
(ID
, CATEGORY_VALUE_ID
, STATUS_END_DATE
, STATUS_END_DATE_SOURCE)
SELECT
t.ID
, t.CATEGORY_VALUE_ID
, GETDATE()
, t.UPDATE_SOURCE
FROM [dbo].[tblCAPITATION] t
INNER JOIN inserted ins
ON t.CATEGORY_VALUE_ID = ins.CATEGORY_VALUE_ID
END
它所需要做的是在htblB插入新行,當列CATEGORY_VALUE_ID被更新。如果只更新一行,它工作正常。但是如果它有多個行更新,那麼將2個更新的行數更新的行插入到htblB中。
UPDATE dbo.tblCAPITATION
SET CAPITATION_STATUS_CATEGORY_VALUE_ID = '80574', UPDATE_SOURCE = 'TEST3'
WHERE CAPITATION_ID = 2 OR CAPITATION_ID = 3
本聲明將插入4個新行htblB而不是2
可能請你能夠解釋爲什麼這是hapening以及如何防止它一些輕?
謝謝!
可以請你幫我明白了,爲什麼這個工作? 謝謝! – OBL
我想我明白了。因爲兩者的值相同。我愚蠢。 – OBL
插入的表格爲您提供剛剛更新的行,您需要將它們連接回基表。你可以在主鍵上進行連接,否則你將看不到正確的行。您取得了在category_value_id上匹配的所有行的組合 – Gratzy