我想触发更改BarcodeFormat
列的值。
所以我做了一个触发器,但我不确定它是否有效。
以下是代码:
CREATE trigger tr_changedUPC
on Item
after update
as update Item
SET BarcodeFormat=(case when(ISNUMERIC(ItemLookupCode)=1) AND
(LEN(ItemLookupCode)=12) AND (NOT(BarcodeFormat=9)) then 9 else 6 end) from inserted
如您所见,我在项目表上触发。如果列Item.ItemLookupCode
的值发生更改,我也想更改列Item.BarcodeFormat
的值。
我还没有执行这个SQL代码。所以我希望你看看这段代码是否合适。
答案 0 :(得分:1)
根据此SQL Fiddle,
CREATE trigger tr_changedUPC
on Item
after update
as update Item
SET BarcodeFormat=(case when(ISNUMERIC(ItemLookupCode)=1) AND
(LEN(ItemLookupCode)=12) AND (NOT(BarcodeFormat=9)) then 9 else 6 end) from inserted
您的代码应该以这种方式稍微改进一下,以使列不那么模糊:
CREATE TRIGGER tr_changedUPC
on Item
after UPDATE
as UPDATE Item
SET Item.BarcodeFormat=(case when(ISNUMERIC(Item.ItemLookupCode)=1) AND
(LEN(Item.ItemLookupCode)=12) AND (NOT(Item.BarcodeFormat=9)) then 9 else 6 end) from inserted;
根据小提琴的结果,您的代码很好,因为“BarCodeFormat”列的值会随着“ItemLookupCode”列的更新而相应更新。