Advertisement
Guest User

Untitled

a guest
May 26th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. /*For this example, I use other schema of database*/
  2.  
  3. IF NOT EXISTS(SELECT * FROM sys.sysobjects WHERE name='Expedientes' AND xtype='U')
  4. CREATE TABLE expedientes (
  5. Code VARCHAR(15) NOT NULL,
  6. State VARCHAR(20) DEFAULT 'INICIO',
  7. StateChangedDate DATETIME,
  8. CONSTRAINT PK_Expedientes PRIMARY KEY(code)
  9. )
  10.  
  11. DELETE FROM Expedientes WHERE Code IN ('exp1','exp2', 'exp3');
  12. INSERT INTO Expedientes(Code) VALUES('exp1');
  13. INSERT INTO Expedientes(Code) VALUES('exp2');
  14. INSERT INTO Expedientes(Code) VALUES('exp3');
  15.  
  16. /*Results*/
  17. Code State StateChangedDate
  18. --------------- -------------------- -----------------------
  19. exp1 INICIO NULL
  20. exp2 INICIO NULL
  21. exp3 INICIO NULL
  22.  
  23. IF NOT EXISTS (SELECT * FROM sys.sysobjects WHERE name='ExpStatusHistory' AND xtype='U')
  24. CREATE TABLE ExpStatusHistory (
  25. Id INT IDENTITY,
  26. Code VARCHAR(15) NOT NULL,
  27. State VARCHAR(20) NOT NULL,
  28. Date DATETIME DEFAULT GETDATE(),
  29. CONSTRAINT PK_ExpStatusHistory PRIMARY KEY(id)
  30. );
  31.  
  32. /*Results*/
  33. Id Code State Date
  34. ----------- --------------- -------------------- -----------------------
  35.  
  36. IF EXISTS(SELECT 1 FROM sys.triggers WHERE name = 'StatusChangeDateTrigger')
  37. DROP TRIGGER StatusChangeDateTrigger
  38. GO
  39.  
  40. CREATE TRIGGER StatusChangeDateTrigger ON Expedientes
  41. AFTER UPDATE AS
  42. IF UPDATE(state)
  43. BEGIN
  44. UPDATE expedientes
  45. SET stateChangedDate = GETDATE()
  46. WHERE code = (SELECT code FROM inserted);
  47.  
  48. INSERT INTO ExpStatusHistory(Code, State)
  49. SELECT Code, State
  50. FROM deleted
  51. WHERE Code = deleted.Code
  52. END
  53. GO
  54.  
  55. SELECT *
  56. FROM Expedientes
  57.  
  58. /*Results*/
  59. Code State StateChangedDate
  60. --------------- -------------------- -----------------------
  61. exp1 INICIO NULL
  62. exp2 INICIO NULL
  63. exp3 INICIO NULL
  64.  
  65. UPDATE Expedientes
  66. SET State = 'PENDIENTE_COBRO'
  67. WHERE Code = 'exp1'
  68.  
  69. SELECT *
  70. FROM ExpStatusHistory
  71.  
  72. /*Results*/
  73. Id Code State Date
  74. ----------- --------------- -------------------- -----------------------
  75. 2 exp1 PENDIENTE_COBRO 2017-05-26 12:35:41.787
  76.  
  77. SELECT *
  78. FROM Expedientes
  79.  
  80. /*Results*/
  81. Code State StateChangedDate
  82. --------------- -------------------- -----------------------
  83. exp1 PENDIENTE_COBRO 2017-05-26 12:35:41.787
  84. exp2 INICIO NULL
  85. exp3 INICIO NULL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement