Advertisement
Guest User

Work 4

a guest
Jan 15th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DROP TRIGGER AddDEPT2;
  2. DELETE FROM DEBUG_LOG;
  3. DELETE FROM DEPT1 WHERE DEPTNO > 40;
  4. DROP SEQUENCE DEPTNO_SEQ;
  5. CREATE SEQUENCE DEPTNO_SEQ
  6.     START WITH 50
  7.     INCREMENT BY 10;
  8. -- Создайте триггер, обеспечивающий автоматическую генерацию значений
  9. -- в одной из таблиц своей базы (для получения очередного номера используйте секвенцию)
  10. CREATE OR REPLACE TRIGGER AddDEPT1
  11. BEFORE INSERT ON DEPT1
  12. FOR EACH ROW
  13. WHEN (NEW.DEPTNO IS NULL)
  14. BEGIN
  15.     SELECT DEPTNO_SEQ.NEXTVAL INTO :NEW.DEPTNO FROM DUAL;
  16.     LogInfo('DEPTNO was generated by DEPTNO_SEQ, = ' || :NEW.DEPTNO, 'TRIGGER AddDEPT1');
  17.     EXCEPTION
  18.         WHEN OTHERS THEN
  19.             LogInfo(SUBSTR(SQLERRM, 1, 100), 'TRIGGER AddDEPT1');
  20. END;
  21. /
  22. -- Проверка
  23. INSERT INTO DEPT1 (DNAME, LOC) VALUES ('DAWDLE', 'SOFA');
  24. DROP TRIGGER AddDEPT1
  25. /
  26. -- Создайте триггер, обеспечивающий автоматическую генерацию значений
  27. -- в одной из таблиц своей базы (без использования секвенции)
  28. CREATE OR REPLACE TRIGGER AddDEPT2
  29. BEFORE INSERT ON DEPT1
  30. FOR EACH ROW
  31. WHEN (NEW.DEPTNO IS NULL)
  32. BEGIN
  33.     SELECT (MAX(DEPTNO) + 10) INTO :NEW.DEPTNO FROM DEPT1;
  34.     LogInfo('DEPTNO was generated by "SELECT (MAX(DEPTNO) + 10)", = ' || :NEW.DEPTNO, 'TRIGGER AddDEPT2');
  35.     EXCEPTION
  36.         WHEN OTHERS THEN
  37.             LogInfo(SUBSTR(SQLERRM, 1, 100), 'TRIGGER AddDEPT2');
  38. END;
  39. /
  40. -- Проверка
  41. INSERT INTO DEPT1 (DNAME, LOC) VALUES ('SUPER DAWDLE', 'FLOOR')
  42. /
  43. -- Создайте триггер, который будет записывать в журнал события,
  44. -- связанные с созданием и удалением таблиц, представлений и секвенций.
  45. CREATE OR REPLACE TRIGGER Cre_Del_Tabl_Views_Seq
  46. BEFORE CREATE OR DROP ON SCHEMA
  47. BEGIN
  48.     IF (DICTIONARY_OBJ_TYPE = 'TABLE' OR DICTIONARY_OBJ_TYPE = 'VIEW' OR DICTIONARY_OBJ_TYPE = 'SEQUENCE') THEN
  49.         LogInfo(DICTIONARY_OBJ_TYPE || ' ' || DICTIONARY_OBJ_NAME || ' was ' || SYSEVENT, 'TRIGGER Cre_Del_Tabl_Views_Seq');
  50.     END IF;
  51. END;
  52. /
  53. -- Проверка
  54. CREATE SEQUENCE TEST
  55.     START WITH 100
  56.     INCREMENT BY 77;
  57. DROP SEQUENCE TEST;
  58. CREATE OR REPLACE PROCEDURE TEST IS BEGIN
  59. NULL;
  60. END;
  61. /
  62. DROP PROCEDURE TEST;
  63. SELECT * FROM debug_log ORDER BY ID;
  64. SELECT * FROM DEPT1;
  65. DROP TRIGGER Cre_Del_Tabl_Views_Seq
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement