我有一个SQL触发器插入,更新我创建它基本上做以下事情:SQL插入,更新触发器 - 你能更新插入的表吗?
获取一个LineID(表的PrimaryID)和RegionID从插入的表,并将其存储在INT变量。 然后它检查连接表以查找RegionID应该是什么,并且如果RegionID与插入表中的值不相等,则应更新该记录。
CREATE TRIGGER [dbo].[TestTrigger]
ON [dbo].[PurchaseOrderLine]
FOR INSERT, UPDATE
AS
-- Find RegionID and PurchaseOrderLineID
DECLARE @RegionID AS INT
DECLARE @PurchaseOrderLineID AS INT
SELECT @RegionID = RegionID, @PurchaseOrderLineID = PurchaseOrderLineID FROM Inserted
-- Find PurchaserRegionID (if any) for the Inserted Line
DECLARE @PurchaserRegionID AS INT
SELECT @PurchaserRegionID = PurchaserRegionID
FROM
(...
) UpdateRegionTable
WHERE UpdateRegionTable.PurchaseOrderLineID = @PurchaseOrderLineID
-- Check to see if the PurchaserRegionID has a value
IF @PurchaserRegionID IS NOT NULL
BEGIN
-- If PurchaserRegionID has a value, compare it with the current RegionID of the Inserted PurchaseOrderLine, and if not equal then update it
IF @PurchaserRegionID <> @RegionID
BEGIN
UPDATE PurchaseOrderLine
SET RegionID = @PurchaserRegionID
WHERE PurchaseOrderLineID = @PurchaseOrderLineID
END
END
我的问题是,它没有更新的记录,我猜,那是因为纪录尚未插入到PurchaseOrderLine表和我做对的更新。但是,你能更新将从插入表插入的行吗?
你好,我有一个相同的问题,有人可以帮助我,请参阅链接http://stackoverflow.com/questions/26043106/how-to-determine-if-insert-or-update/26043654?noredirect=1#comment40803473_26043654 – Prathyush