Ich habe einen SQL-Server "anstelle von Einfügen" Auslöser, der eine einzelne Spalte (PromoCode) füllt. Es funktioniert alles perfekt, aber ich weiß nicht, wie die Tatsache, das ich je hatte die Spalten in der tatsächlichen INSERT-Anweisung zu codieren:Vermeiden Sie Hardcoding beim Ändern von Werten in SQL Server-Trigger
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
Ich ziehe es würde den Wert innerhalb inserted.PromoCode mit @PromoCode einfach zu ersetzen und dann konnte Verwenden Sie:
Kann dies getan werden?
Sind Sie sicher, dass Sie immer nur eine Zeile nacheinander einfügen? Wenn jemand (z. B. ein DBA, der einen Tisch spät nachts repariert) jemals mehrere Zeilen in eine Anweisung einfügt, wird allen eingefügten Zeilen der gleiche @ PromoCode-Wert zugewiesen. –
Massenkopie irgendjemand? – NotMe