Advertisement
Guest User

Untitled

a guest
Oct 24th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.28 KB | None | 0 0
  1. ---insert after - после того как добавили материал\фиттинг в поставку, изменять количество товаров на складе
  2. ---insert instead of - вставка нового материала или фиттинга
  3. --ALTER TRIGGER TR_pr_in_supply_insert
  4. --ON Product_in_supply AFTER INSERT
  5.  
  6. --SELECT * FROM Material
  7. --SELECT * FROM Fitting
  8.  
  9. --drop trigger TR_material_insert
  10.  
  11. CREATE TRIGGER TR_material_insert
  12. ON Material INSTEAD OF INSERT
  13. AS
  14. IF @@ROWCOUNT = 1
  15. BEGIN
  16.     DECLARE @x INT, @am FLOAT, @pr FLOAT, @n NVARCHAR(30), @M1 INT, @F1 INT, @AUX FLOAT
  17.     SELECT @x = ID, @am = Amount, @pr = Selling_price,
  18.         @n = Name from inserted
  19.     IF NOT EXISTS (SELECT * FROM Material WHERE @n = Name)
  20.     BEGIN
  21.         SET @M1 = 0
  22.         SET @F1 = 0
  23.         SELECT @M1 = MAX(ID) FROM Material
  24.         SELECT @F1 = MAX(ID) FROM Fitting
  25.         IF(@F1 > @M1)
  26.             SET @M1 = @F1
  27.         SET @M1 = @M1 + 1
  28.         INSERT  INTO [dbo].[Material] VALUES (@M1, @am, @pr, @n)
  29.     END
  30.     ELSE
  31.     BEGIN
  32.         SELECT @x = ID, @AUX = Selling_price
  33.         FROM Material
  34.         WHERE @n = Name
  35.  
  36.         IF(@pr > @AUX)
  37.         BEGIN
  38.             UPDATE Material
  39.             SET Selling_price = @pr
  40.             WHERE ID = @x
  41.         END
  42.  
  43.         UPDATE Material
  44.         SET Amount = Amount + @am
  45.         WHERE ID = @x
  46.     END
  47. END
  48.  
  49. --insert after - после того как добавили материал\фиттинг в поставку, изменять количество товаров на складе
  50.  
  51. CREATE TRIGGER TR_product_in_supply_insert
  52. ON Product_in_supply AFTER INSERT
  53. AS
  54. IF @@ROWCOUNT = 1
  55. BEGIN
  56.     DECLARE @x INT, @am FLOAT, @pr FLOAT, @M1 FLOAT, @F1 FLOAT
  57.     SELECT @x = ID_Product, @am = Amount, @pr = Purchase_price from inserted
  58.     IF EXISTS (SELECT * FROM Material WHERE @x = ID)
  59.     BEGIN
  60.         SELECT @M1 = Selling_price FROM Material WHERE @x = ID
  61.         IF @M1 < @pr
  62.                 SET @M1 = @pr * 1.1
  63.  
  64.         UPDATE Material
  65.         SET Amount = Amount + @am, Selling_price = @M1
  66.         WHERE ID = @x
  67.     END
  68.     ELSE IF EXISTS (SELECT * FROM Fitting WHERE @x = ID)
  69.     BEGIN
  70.         SELECT @F1 = Selling_price FROM Fitting WHERE @x = ID
  71.         IF @F1 < @pr
  72.                 SET @F1 = @pr * 1.1
  73.  
  74.         UPDATE Fitting
  75.         SET Amount = Amount + @am, Selling_price = @F1
  76.         WHERE ID = @x
  77.     END
  78.     ELSE
  79.         RAISERROR('The item does not exist in the database', 16, 10)
  80. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement