У меня есть SQL-сервер вместо триггера "insert", который заполняет один столбец (PromoCode). Это все работает отлично, но мне не нравится тот факт, я должен был жёстко столбцы в действительности заявления 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
Я бы предпочел, чтобы просто заменить значение внутри inserted.PromoCode с @PromoCode и затем может использование:
INSERT INTO Order
SELECT * FROM inserted;
Это можно сделать?
Вы не уверены, что будете вставлять только одну строку за раз? Если кто-нибудь (скажем, администратор базы данных за одну ночь) добавляет несколько строк в один оператор, всем вставленным строкам будет присвоено то же значение @PromoCode. –
Массовая копия кого-нибудь? – NotMe