Question

I have a table with different prices for each item. Each item have prices 0, 1, 2, 3. I need to change price 3 when price 0 is changed. Price 3 = Price 0 + 20%. I made this trigger:

CREATE TRIGGER trg_PG_Change_Price3

ON ItemSellingPrices

AFTER UPDATE

AS

BEGIN

DECLARE
    @Item NVARCHAR(25),
    @CostPrice FLOAT;

SELECT
    @Item = ItemID,
    @CostPrice = UnitPrice
FROM
    inserted
WHERE PriceLineID = 0

UPDATE ItemSellingPrices
SET     UnitPrice = @CostPrice*1.2
WHERE ItemID = @Item AND PriceLineID = 3

END

It turns out that when I run an UPDATE via SQL query directly, everything runs perfectly. But when the price 0 is updated via ERP nothing happens. Anyone have any ideas? (MS SQL Server) It seems that the trigger does not fire when the update is done via ERP system.

Was it helpful?

Solution

CREATE TRIGGER trg_PG_Change_Price3
ON ItemSellingPrices
AFTER UPDATE
AS
BEGIN
 SET NOCOUNT ON;

    SELECT i.ItemID, i.UnitPrice INTO #temp
    FROM inserted i INNER JOIN deleted d 
    ON i.ItemID = d.ItemID
    WHERE i.PriceLineID = 0
    AND   i.UnitPrice <> d.UnitPrice


    UPDATE T
    SET T.UnitPrice = i.UnitPrice * 1.2
    FROM ItemSellingPrices T INNER JOIN #temp i
    ON T.ItemID = i.ItemID
    WHERE T.PriceLineID = 3

END

Without Temp Table

CREATE TRIGGER trg_PG_Change_Price3
ON ItemSellingPrices
AFTER UPDATE
AS
BEGIN
 SET NOCOUNT ON;

    UPDATE T
    SET T.UnitPrice = i.UnitPrice * 1.2
    FROM ItemSellingPrices T 
            INNER JOIN (    SELECT i.ItemID, i.UnitPrice
                            FROM inserted i INNER JOIN deleted d 
                            ON i.ItemID = d.ItemID
                            WHERE i.PriceLineID = 0
                            AND   i.UnitPrice <> d.UnitPrice
                        ) i
    ON T.ItemID = i.ItemID
    WHERE T.PriceLineID = 3

END
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top