SQL Serverの "insert into"トリガの代わりに、単一の列(PromoCode)を挿入するSQL Serverがあります。それはすべて完璧に動作しますが、私は、私は、実際のINSERT文で列をハードコーディングしなければならなかったという事実が好きではありません:SQL Serverトリガーで値を変更するときハードコーディングを避ける
CREATE TRIGGER PopulateOrderPromoCode ON Order
INSTEAD OF INSERT
AS BEGIN
--// Get the Promo Code
DECLARE @PromoCode int;
EXEC GetPromoCode @PromoCode OUTPUT;
--// Insert the order with the new Promo Code
INSERT INTO Order (Id, CustomerId, PromoCode)
SELECT Id, CustomerId, @PromoCode FROM inserted;
END
を私は単に@PromoCodeでinserted.PromoCode内の値を交換して、可能性を好むだろう使用:
INSERT INTO Order
SELECT * FROM inserted;
これを行うことはできますか?
一度に1つの行しか挿入しないことは確実ですか?誰か(ある一晩後にテーブルを修正するDBA)が1つのステートメントに複数の行を挿入すると、挿入されたすべての行に同じ@PromoCode値が割り当てられます。 –
バルクコピーの誰ですか? – NotMe