とテーブルにトリガーコピー私は非常に単純なトリガーを持っているコピー"UPDATE FOR ... SELECT * FROM DELETED" 2つの余分な列
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の変更以外の同じ型、同じnull設定、同じデフォルト値です。
これは完全に機能しますが、今日は列を追加したかったのです。
Authors
に追加しようとしましたが、すぐにトリガーの列リストについて何かエラーが発生しました。 (私はSelect *
を使用しています)- 私は
AuthorsHistory
に最初に列を追加しましたが、もう一度Authors
を試してみましたが、それはトリガーに直接言及して別のエラーを投げました。
(これはまだそれを構築し、現時点では問題ではありません)私は、トリガーを追加し、列を調整し、トリガーを削除し、解像度を見つけましたが、私はまた、一時的にAuthorsHistory
からhWhen
を削除する必要がありました。
もう1つのオプションは、おそらく列名と値に固有のものです。 私はコードでこれを行いますが、私はそれを避けることができれば、更新することは1つ少ないという考えが好きです。
質問:SELECT *でこれを行う方法はありますか?**他のテーブルにも同じトリガー(つまり、 "Products ==> ProductsHistory
")があります。私が見たよう
SSMSデザイナを使用して列を追加しないでください。TSQLを使用するだけであれば、両方のテーブルに順番に追加することができます。例えばhttp://rextester.com/NNIWQN4856 –
よろしくお願いいたします。 @MartinSmith –