Guest User

Untitled

a guest
May 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. --1. trigger usówający spektakl wraz z biletami reżyserem i niszczący powiązania z aktorami
  2.  
  3. CREATE OR REPLACE TRIGGER usun_spektakl
  4. BEFORE DELETE ON Spektakl
  5. FOR EACH ROW
  6.  
  7. BEGIN
  8. DELETE FROM wyswietla w WHERE w.Id_spektaklu = :OLD.Id_spektaklu;
  9. DELETE FROM zagrali z WHERE z.Id_spektaklu = :OLD.Id_spektaklu;
  10. DELETE FROM Bilet b WHERE b.Id_spektaklu = :OLD.Id_spektaklu;
  11. DELETE FROM Rezyser r WHERE r.Id_spektaklu = :OLD.Id_spektaklu;
  12. END;
  13. /
  14. DELETE FROM Spektakl WHERE Spektakl.Id_spektaklu = 3;
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22. --2. trigger śledzący zmiany dokonywane w tabeli Spektakl
  23.  
  24. DROP SEQUENCE sledz_s;
  25.  
  26. CREATE SEQUENCE sledz_s ORDER;
  27.  
  28. DROP TABLE Sledz_inf CASCADE CONSTRAINTS;
  29.  
  30. CREATE TABLE Sledz_inf(
  31. Id_spektaklu NUMBER(6),
  32. Id_rezysera NUMBER(6),
  33. Tytul VARCHAR2(100),
  34. Poczatek_grania DATE,
  35. Koniec_grania DATE,
  36. Czas_trwania NUMBER(3)
  37.  
  38. );
  39.  
  40. CREATE OR REPLACE TRIGGER sledz
  41. BEFORE INSERT OR UPDATE OR DELETE ON spektakl
  42. FOR EACH ROW
  43.  
  44. BEGIN
  45. CASE
  46. WHEN INSERTING THEN
  47. INSERT INTO Sledz_inf(Id_spektaklu, Id_rezysera,Tytul, Poczatek_grania, Koniec_grania, Tytul) VALUES (sledz_s.NEXTVAL, 'INSERT', SYSDATE, ORA_LOGIN_USER, :NEW.Tytul);
  48. WHEN UPDATING THEN
  49. INSERT INTO Sledz_inf(Id_spektaklu, Id_rezysera,Tytul, Poczatek_grania, Koniec_grania, Tytul) VALUES (sledz_s.NEXTVAL, 'UPDATE', SYSDATE, ORA_LOGIN_USER, :OLD.Tytul);
  50. WHEN DELETING THEN
  51. INSERT INTO Sledz_inf(Id_spektaklu, Id_rezysera,Tytul, Poczatek_grania, Koniec_grania, Tytul) VALUES (sledz_s.NEXTVAL, 'DELETE', SYSDATE, ORA_LOGIN_USER, :OLD.Tytul);
  52. END CASE;
  53. END;
  54. /
  55.  
  56. SELECT * FROM Sledz_inf;
  57.  
  58.  
  59.  
  60.  
  61.  
  62. --3. trigger zabespiecz przed ustawieniem zbyt wysokiej ceny biletu
  63.  
  64. CREATE OR REPLACE TRIGGER sprawdz_cene_biletu
  65. BEFORE INSERT OR UPDATE ON Bilet
  66. FOR EACH ROW
  67.  
  68. BEGIN
  69. IF :NEW.Cena > 30 THEN
  70. CASE
  71. WHEN UPDATING THEN
  72. :NEW.Cena := :OLD.Cena;
  73. WHEN INSERTING THEN
  74. :NEW.Cena := 29;
  75. END CASE;
  76. END IF;
  77. END;
  78. /
  79.  
  80. UPDATE Bilet SET Cena = 100 WHERE Id_biletu = 3;
  81. SELECT * FROM Bilet WHERE Id_biletu = 3;
  82. INSERT INTO Bilet VALUES (6666, 10, 6, 100, 0, 0300022);
  83. SELECT * FROM Bilet WHERE Id_biletu = 6666;
Add Comment
Please, Sign In to add comment