added ÜZ 14
This commit is contained in:
59
Uebungszettel_14.sql
Normal file
59
Uebungszettel_14.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
SET SERVEROUTPUT ON;
|
||||
|
||||
Drop table IdVal;
|
||||
|
||||
CREATE TABLE IdVal (
|
||||
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY ,
|
||||
val NUMBER(3)
|
||||
);
|
||||
|
||||
DECLARE
|
||||
v_count NUMBER := 300;
|
||||
v_num NUMBER := 1;
|
||||
BEGIN
|
||||
|
||||
FOR a IN 0..900 LOOP
|
||||
IF a >= v_count THEN
|
||||
v_count := v_count + 300;
|
||||
v_num := v_num + 1;
|
||||
END IF;
|
||||
|
||||
Insert into IdVal (val) values (v_num);
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE delete_counter
|
||||
AS
|
||||
v_oldTable NUMBER;
|
||||
v_newTable NUMBER;
|
||||
END delete_counter;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE TRIGGER delete_trigger_before
|
||||
BEFORE DELETE
|
||||
ON IdVal
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO delete_counter.v_oldTable
|
||||
FROM IdVal;
|
||||
END delete_trigger_before;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE TRIGGER delete_trigger_after
|
||||
AFTER DELETE
|
||||
ON IdVal
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO delete_counter.v_newTable
|
||||
FROM IdVal;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('NEW: '||delete_counter.v_newTable);
|
||||
DBMS_OUTPUT.PUT_LINE('OLD: '||delete_counter.v_oldTable);
|
||||
|
||||
IF delete_counter.v_newTable < (delete_counter.v_oldTable/2) THEN
|
||||
Raise_Application_error(-20001, 'TOOO mUch DelEteED!?=');
|
||||
END IF;
|
||||
END delete_trigger_after;
|
||||
/
|
||||
|
||||
|
||||
DELETE FROM IdVal WHERE ROWNUM < 500;
|
||||
Reference in New Issue
Block a user