-4

我想触发更改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

如您所见,我正在对项目表进行触发器。当 column 的值Item.ItemLookupCode改变时,我也想改变 column 的值Item.BarcodeFormat

我还没有执行这个 SQL 代码。所以我想让你看看这段代码,如果它是好的。

4

1 回答 1

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”列的更新而相应更新。

于 2013-10-28T22:08:45.453 回答