我是SQL初学者的新手,并且通过它学习了我的方法。
当同一行的另一个值被编辑时,我需要能够更新表中的值。
我目前有这个。
USE [DBNAME]
GO
/****** Object: Trigger [dbo].[distval1] Script Date: 03/12/2018 13:22:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create TRIGGER [dbo].[distval3]
ON [dbo].[ZID00181]
AFTER INSERT
AS
BEGIN
IF UPDATE(supplier_code)
begin
update ZID00181
set Distribution_Value = '200'
where Supplier_Code like '2%'
--set Distribution_Value = branch_plant
--where supplier_code like '4%'
end
END
因此,基本上,当供应商代码以2开头时,它会设置分配值。
初次导入时似乎无法正常工作,但是如果先导入null并随后对其进行更新,则无法正常工作。
有什么想法吗?
答案 0 :(得分:0)
您需要将触发器更改为“ AFTER INSERT,UPDATE”。 另外,我相信您只想在同一行中的vendor_code更改时才更新“ Distribution_Value”。因此,您的更新适用于与“ 2%”之类的Supplier_Code匹配的整个表。如果您只想更新已更新的行,则需要执行以下操作:
CREATE TRIGGER [dbo].[distval3]
ON [dbo].[ZID00181]
AFTER INSERT, UPDATE
AS
BEGIN
IF UPDATE(supplier_code)
BEGIN
UPDATE ZID00181
SET Distribution_Value = '200'
WHERE Supplier_Code like '2%'
AND ZID00181.<PRIMARY KEY HERE> IN (SELECT <PRIMARY KEY HERE> FROM INSERTED)
--set Distribution_Value = branch_plant
--where supplier_code like '4%'
END
END