DBMS STANDARD
DBMS_STANDARD#
DBMS_STANDARD 패키지는 패키지 이름을 명시하지 않고 사용할 수 있는 다양한 서브 프로그램을 제공한다. DBMS_STANDARD 패키지를 구성하는 프로시저와 함수는 아래의 표와 같다.
프로시저 및 함수 | 설명 |
---|---|
DELETING | Trigger가 DELETE로부터 시작한 것인지 여부를 반환한다. |
INSERTING | Trigger가 INSERT로부터 시작한 것인지 여부를 반환한다. |
UPDATING | Trigger가 UPDATE로부터 시작한 것인지 여부를 반환한다. |
UPDATING (colname) | Trigger가 특정 컬럼의 UPDATE로부터 시작한 것인지 여부를 반환한다. |
DELETING#
Trigger가 DELETE로부터 시작한 것인지를 반환한다.
구문#
BOOLEAN variable := DBMS_STANDARD.DELETING;
BOOLEAN variable := DELETING;
결과값#
trigger가 DELETE로부터 시작한 경우 TRUE를 반환한다.
예외#
예외를 발생시키지 않는다.
예제
CREATE TABLE T1 (C1 INTEGER);
CREATE TABLE TMP ( C1 VARCHAR(10) );
INSERT INTO T1 VALUES(1);
CREATE OR REPLACE TRIGGER TRIG1
BEFORE DELETE ON T1
FOR EACH ROW
BEGIN
IF DELETING THEN
INSERT INTO TMP VALUES ('DELETE');
END IF;
END;
/
iSQL> DELETE FROM T1;
1 row deleted.
iSQL> SELECT & FROM TMP;
1 row selected.
INSERTING#
Trigger가 INSERT로부터 시작한 것인지를 반환한다.
구문#
BOOLEAN variable := DBMS_STANDARD.INSERTING;
BOOLEAN variable := INSERTING;
결과값#
trigger가 INSERT로부터 시작한 경우 TRUE를 반환한다.
예외#
예외를 발생시키지 않는다.
예제#
CREATE TABLE T1 (C1 INTEGER);
CREATE TABLE TMP (C1 VARCHAR(10));
CREATE OR REPLACE TRIGGER TRIG1
BEFORE INSERT ON T1
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO TMP VALUES ('INSERT');
END IF;
END;
/
iSQL> INSERT INTO T1 VALUES(2);
1 row inserted.
iSQL> SELECT * FROM TMP;
TMP.C1
--------------
INSERT
1 row selected.
UPDATING#
Trigger가 UPDATE로부터 시작한 것인지를 반환한다.
구문#
BOOLEAN variable := DBMS_STANDARD.UPDATING;
BOOLEAN variable := UPDATING;
결과값#
trigger가 UPDATE로부터 시작한 경우 TRUE를 반환한다.
예외#
예외를 발생시키지 않는다.
예제#
(CREATE TABLE T1 (C1 INTEGER);
CREATE TABLE TMP (C1 VARCHAR(10));
INSERT INTO T1 VALUES(1);
CREATE OR REPLACE TRIGGER TRIG1
BEFORE UPDATE ON T1
FOR EACH ROW
BEGIN
IF UPDATING THEN
INSERT INTO TMP VALUES ('UPDATE');
END IF;
END;
/
iSQL> UPDATE T1 SET C1 = 2;
1 row updated.
iSQL> SELECT * FROM TMP;
TMP.C1
--------------
UPDATE
1 row selected.
UPDATING (colname)#
Trigger가 특정 컬럼의 UPDATE로부터 시작한 것인지를 반환한다.
구문#
BOOLEAN variable := DBMS_STANDARD.UPDATING(COLNAME IN VARCHAR(128));
BOOLEAN variable := UPDATING(COLNAME IN VARCHAR(128));
파라미터#
이름 | 입출력 | 데이터 타입 | 설명 |
---|---|---|---|
COLNAME | IN | VARCHAR(128) | 컬럼 이름을 명시한다. |
결과값#
trigger가 특정 컬럼의 UPDATE로부터 시작한 경우 TRUE를 반환한다.
예외#
예외를 발생시키지 않는다.
예제#
CREATE TABLE T1 (C1 INTEGER, C2 INTEGER);
CREATE TABLE TMP (C1 VARCHAR(10));
INSERT INTO T1 VALUES(1, 2);
CREATE OR REPLACE TRIGGER TRIG1
BEFORE UPDATE ON T1
FOR EACH ROW
BEGIN
IF UPDATING('C1') THEN
INSERT INTO TMP VALUES ('UPDATE-C1');
ELSE
INSERT INTO TMP VALUES ('OTHER');
END IF;
END;
/
iSQL> UPDATE T1 SET C1 = 2;
1 row updated.
iSQL> SELECT * FROM TMP;
TMP.C1
--------------
UPDATE-C1
1 row selected.
iSQL> UPDATE T1 SET C2 = 3;
1 row updated.
iSQL> SELECT * FROM TMP;
TMP.C1
--------------
UPDATE-C1
OTHER
2 rows selected.