我有一個非常簡單的觸發器,複製當前行的「FOR UPDATE ... SELECT * FROM刪除」 觸發複製到表有兩個額外的列
Authors
:AuthorID(PK)
,AuthorName
,Bio
AuthorsHistory
:HistoryID(PK)
,AuthorID
,AuthorName
,Bio
,hWhen(dateTime)
hWhen
使用getDate()
填寫其值。
CREATE TRIGGER [dbo].[AuthorHistory]
ON [dbo].[B_Authors]
FOR UPDATE
AS
INSERT INTO B_AuthorsHistory
SELECT *
FROM deleted
有更多的列,但他們無關緊要。所有列都是相同的類型,相同的空設置,相同的默認值,而不是PK更改。
它完美的工作,但今天我想添加一列。
- 我試圖將它添加到
Authors
,它立即拋出一個錯誤,關於觸發器中的列表列表。 (我正在使用Select *
) - 我加了第一列到
AuthorsHistory
,再次嘗試Authors
,並且它直接提到觸發器拋出了一個不同的錯誤。
我找到解決方法,刪除了扳機,調整列,添加了扳機,但我也不得不刪除從AuthorsHistory
暫時hWhen
(這是不是現在的問題,還是構建它)。
另一種選擇很可能是針對列名和值。 我在代碼中這樣做,但我喜歡這樣的想法,即使我可以避免更新,也無需更新。
問題:有沒有一種方法,我可以用SELECT * **我有一個相同的觸發(即「Products ==> ProductsHistory
」)上的其他表也這麼做?
不要使用SSMS設計器來添加你的列,如果你只是使用TSQL,你應該可以將它們添加到兩個表中。例如http://rextester.com/NNIWQN4856 –
好的,謝謝。 @MartinSmith –