Advertisement
Kimossab

SIBD - S15.2

May 25th, 2015
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.40 KB | None | 0 0
  1. IF OBJECT_ID('CópiaFornecedores') IS NOT NULL
  2.     DROP TABLE CópiaFornecedores
  3. IF OBJECT_ID('CópiaFacturas') IS NOT NULL
  4.     DROP TABLE CópiaFacturas
  5.  
  6. SELECT * INTO CópiaFornecedores FROM Fornecedores
  7. SELECT * INTO CópiaFacturas FROM Facturas
  8.  
  9. GO
  10.  
  11.  
  12. CREATE TRIGGER CópiaFornecedores_UPDATE_DELETE_IR
  13.     ON CópiaFornecedores
  14.     AFTER DELETE,UPDATE
  15. AS
  16.     IF EXISTS (SELECT * FROM Deleted JOIN CópiaFacturas
  17.                     ON Deleted.IDFornecedor = CópiaFacturas.Fornecedor)
  18.     BEGIN
  19.         RAISERROR('Este fornedor tem facturas associadas.
  20.         Logo, não pode ser eliminado.', 11, 1)
  21.         ROLLBACK TRAN
  22.     END
  23. GO
  24.  
  25. CREATE TRIGGER CópiaFacturas_INSERT_UPDATE_IR
  26.     ON CópiaFacturas
  27.     AFTER INSERT,UPDATE
  28. AS
  29.     IF NOT EXISTS (SELECT * FROM CópiaFornecedores WHERE IDFornecedor IN (SELECT Fornecedor FROM Inserted))
  30.     BEGIN
  31.         RAISERROR('Não existe nenhum fornecedor com este identificador.
  32.             Escolha outro', 11, 1)
  33.         ROLLBACK TRAN
  34.     END
  35.  
  36.  
  37. /*2.1*/
  38.  
  39. DELETE FROM CópiaFornecedores
  40.     WHERE Nome = 'Bell'
  41.  
  42. INSERT INTO CópiaFacturas(IDFactura, Fornecedor, NúmeroFactura,DataFactura, TotalFactura,Pagamento,Crédito,CondiçãoPagamento,DataVencimentoFactura,DataPagamento) VALUES (4646, 70,'JC48864',CONVERT(datetime,'02/02/2006'),1,552,2000,2,CONVERT(datetime,'02/02/2006'),NULL)
  43.  
  44. /*2.2*/
  45. IF OBJECT_ID('CópiaFornecedores') IS NOT NULL
  46.     DROP TABLE CópiaFornecedores
  47. IF OBJECT_ID('CópiaFacturas') IS NOT NULL
  48.     DROP TABLE CópiaFacturas
  49.  
  50. SELECT * INTO CópiaFornecedores FROM Fornecedores
  51. SELECT * INTO CópiaFacturas FROM Facturas
  52.  
  53. GO
  54.  
  55. /*2.2.1*/
  56. IF OBJECT_ID('fn_GetDiv') IS NOT NULL
  57.         DROP FUNCTION fn_GetDiv
  58. GO
  59. CREATE FUNCTION fn_GetDiv(@idforn INT)
  60. RETURNS MONEY
  61. BEGIN
  62.         DECLARE @ret INT;
  63.         SET @ret = (SELECT SUM(TotalFactura-Pagamento-Crédito) FROM CópiaFacturas WHERE Fornecedor = @idforn)
  64.         RETURN @ret
  65. END
  66.  
  67. GO
  68. /*2.2.4*/
  69. IF OBJECT_ID('Facturas_Bloquear') IS NOT NULL
  70.         DROP TRIGGER Facturas_Bloquear
  71. GO
  72. CREATE TRIGGER Facturas_Bloquear
  73.     ON CópiaFacturas
  74.     AFTER INSERT,UPDATE
  75. AS
  76.     /*2.2.2*/
  77.     IF (SELECT COUNT(*) FROM Inserted) > 1
  78.     BEGIN
  79.         RAISERROR('Inserir apenas um registo.', 11, 1)
  80.         ROLLBACK TRAN
  81.     END
  82.     /*2.2.3*/
  83.     DECLARE @x INT;
  84.     SET @x = (SELECT Fornecedor FROM Inserted)
  85.     IF (dbo.fn_GetDiv(@x) > 2500)
  86.     BEGIN
  87.         RAISERROR('Dívida superior a 2500€. Adição Bloqueada.', 11, 1)
  88.         ROLLBACK TRAN
  89.     END
  90.  
  91. GO
  92.  
  93. INSERT INTO CópiaFacturas(IDFactura, Fornecedor, NúmeroFactura,DataFactura, TotalFactura,CondiçãoPagamento,DataVencimentoFactura, Pagamento,Crédito) VALUES (125,82,'LS2015-223',getdate(),1235.25,1,dateadd(DAY,30,getdate()),0,0)
  94. INSERT INTO CópiaFacturas(IDFactura, Fornecedor, NúmeroFactura,DataFactura, TotalFactura,CondiçãoPagamento,DataVencimentoFactura, Pagamento,Crédito) VALUES (126,122,'LS2015-224',getdate(),2400.30,4,dateadd(DAY,30,getdate()),0,0)
  95.  
  96. /*2.3*/
  97. IF OBJECT_ID('Trig_FactED') IS NOT NULL
  98.         DROP TRIGGER Trig_FactED
  99. IF OBJECT_ID('Trig_FactED_Del') IS NOT NULL
  100.         DROP TRIGGER Trig_FactED_Del
  101. GO
  102. CREATE TRIGGER Trig_FactED_ins
  103.     ON ItensFacturasED
  104.     AFTER INSERT,UPDATE
  105. AS
  106.     UPDATE ProdutosED SET Quantidade=Quantidade - (SELECT Quantidade FROM Inserted) WHERE Código = (SELECT Produto FROM inserted)
  107.  
  108. GO
  109.  
  110. CREATE TRIGGER Trig_FactED_Del
  111.     ON ItensFacturasED
  112.     AFTER INSERT,UPDATE
  113. AS
  114.     UPDATE ProdutosED SET Quantidade=Quantidade - (SELECT Quantidade FROM Inserted) WHERE Código = (SELECT Produto FROM inserted)
  115.    
  116.    
  117.  
  118. /*2.3.1*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement