Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DROP TRIGGER AddDEPT2;
- DELETE FROM DEBUG_LOG;
- DELETE FROM DEPT1 WHERE DEPTNO > 40;
- DROP SEQUENCE DEPTNO_SEQ;
- CREATE SEQUENCE DEPTNO_SEQ
- START WITH 50
- INCREMENT BY 10;
- -- Создайте триггер, обеспечивающий автоматическую генерацию значений
- -- в одной из таблиц своей базы (для получения очередного номера используйте секвенцию)
- CREATE OR REPLACE TRIGGER AddDEPT1
- BEFORE INSERT ON DEPT1
- FOR EACH ROW
- WHEN (NEW.DEPTNO IS NULL)
- BEGIN
- SELECT DEPTNO_SEQ.NEXTVAL INTO :NEW.DEPTNO FROM DUAL;
- LogInfo('DEPTNO was generated by DEPTNO_SEQ, = ' || :NEW.DEPTNO, 'TRIGGER AddDEPT1');
- EXCEPTION
- WHEN OTHERS THEN
- LogInfo(SUBSTR(SQLERRM, 1, 100), 'TRIGGER AddDEPT1');
- END;
- /
- -- Проверка
- INSERT INTO DEPT1 (DNAME, LOC) VALUES ('DAWDLE', 'SOFA');
- DROP TRIGGER AddDEPT1
- /
- -- Создайте триггер, обеспечивающий автоматическую генерацию значений
- -- в одной из таблиц своей базы (без использования секвенции)
- CREATE OR REPLACE TRIGGER AddDEPT2
- BEFORE INSERT ON DEPT1
- FOR EACH ROW
- WHEN (NEW.DEPTNO IS NULL)
- BEGIN
- SELECT (MAX(DEPTNO) + 10) INTO :NEW.DEPTNO FROM DEPT1;
- LogInfo('DEPTNO was generated by "SELECT (MAX(DEPTNO) + 10)", = ' || :NEW.DEPTNO, 'TRIGGER AddDEPT2');
- EXCEPTION
- WHEN OTHERS THEN
- LogInfo(SUBSTR(SQLERRM, 1, 100), 'TRIGGER AddDEPT2');
- END;
- /
- -- Проверка
- INSERT INTO DEPT1 (DNAME, LOC) VALUES ('SUPER DAWDLE', 'FLOOR')
- /
- -- Создайте триггер, который будет записывать в журнал события,
- -- связанные с созданием и удалением таблиц, представлений и секвенций.
- CREATE OR REPLACE TRIGGER Cre_Del_Tabl_Views_Seq
- BEFORE CREATE OR DROP ON SCHEMA
- BEGIN
- IF (DICTIONARY_OBJ_TYPE = 'TABLE' OR DICTIONARY_OBJ_TYPE = 'VIEW' OR DICTIONARY_OBJ_TYPE = 'SEQUENCE') THEN
- LogInfo(DICTIONARY_OBJ_TYPE || ' ' || DICTIONARY_OBJ_NAME || ' was ' || SYSEVENT, 'TRIGGER Cre_Del_Tabl_Views_Seq');
- END IF;
- END;
- /
- -- Проверка
- CREATE SEQUENCE TEST
- START WITH 100
- INCREMENT BY 77;
- DROP SEQUENCE TEST;
- CREATE OR REPLACE PROCEDURE TEST IS BEGIN
- NULL;
- END;
- /
- DROP PROCEDURE TEST;
- SELECT * FROM debug_log ORDER BY ID;
- SELECT * FROM DEPT1;
- DROP TRIGGER Cre_Del_Tabl_Views_Seq
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement