콘텐츠로 이동

트리거 변환 규칙

트리거 변환 규칙#

RULE-12002#

이 규칙은 Altibase 6.3.1 이전 버전에 적용된다.

타입#

TODO

설명#

'INSTEAD OF'는 수동으로 변환해야 한다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER log_attendance
INSTEAD OF INSERT ON attendance_view FOR EACH ROW
BEGIN
IF :NEW.cnt < 2 THEN
INSERT INTO daily_log VALUES(:NEW.id, CURRENT_TIMESTAMP);
END IF;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER log_attendance
INSTEAD OF /* [TODO] RULE-12002 : 'INSTEAD OF' must be converted manually */ INSERT ON attendance_view FOR EACH ROW
BEGIN
IF :NEW.cnt < 2 THEN
INSERT INTO daily_log VALUES(:NEW.id, CURRENT_TIMESTAMP);
END IF;
END;

RULE-12003#

타입#

TODO

설명#

여러 개의 이벤트를 지원하는 트리거는 수동으로 변환해야 한다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE INSERT OR DELETE ON t1
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE INSERT OR DELETE ON t1 /* [TODO] RULE-12003 : Triggers supporting multiple events must be converted manually */
BEGIN
NULL;
END;

RULE-12004#

이 규칙은 저장 프로시저 블록에 사용된 DECLARE 절에 관한 것으로 Altibase 서버 버전에 따라 다르게 적용된다.

타입#

TODO

설명#

Altibase 6.1.1 이하 버전에 적용되는 규칙

  • 저장 프로시저 블록 앞에 DECLARE가 있으면 AS 또는 IS로 변경하고 생략된 경우 AS 또는 IS를 추가해야 한다.

Altibase 6.1.1 이하 버전에서 DECLARE는 지원하지 않으며 AS 또는 IS 이 필수 구문이다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE INSERT ON t1
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE INSERT ON t1
BEGIN /* [TODO] RULE-12004 : 'AS' or 'IS' should be used regardless of that DECLARE exists or not in the PSM block. */
NULL;
END;

Altibase 6.3.1 / Altibase 6.5.1.0.0~6.5.1.3.7

  • 저장 프로시저 블록의 선언부 앞에 DECLARE가 있으면 AS 또는 IS로 변경하고 생략된 경우 그대로 적용한다.

해당 버전에서 DECLARE는 지원하지 않으며 AS 또는 IS 는 선택적으로 사용하는 구문이다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE INSERT ON t1
DECLARE
v1 NUMBER := 1;
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE INSERT ON t1
DECLARE /* [TODO] RULE-12004 : 'AS' or 'IS' must replace 'DECLARE' that starts the declarative part of the block */
v1 NUMBER := 1;
BEGIN
NULL;
END;

RULE-12005#

타입#

TODO

설명#

비 DML 트리거는 수동으로 변환해야 한다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE CREATE ON DATABASE
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE CREATE ON DATABASE /* [TODO] RULE-12005 : Non DML trigger must be converted manually */
BEGIN
NULL;
END;

RULE-12007#

타입#

TODO

설명#

중첩 테이블은 수동으로 변환해야 한다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
INSTEAD OF DELETE ON NESTED TABLE t1 OF v1
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
INSTEAD OF DELETE ON NESTED TABLE t1 OF v1 /* [TODO] RULE-12007 : Nested table must be converted manually */
BEGIN
NULL;
END;

RULE-12008#

타입#

TODO

설명#

CALL 절은 수동으로 변환해야 한다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER DELETE ON t1
CALL testproc1(a1, a2);
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER DELETE ON t1
CALL testproc1(a1, a2) /* [TODO] RULE-12008 : CALL routine clause must be converted manually */;

RULE-12009#

타입#

TODO

설명#

중첩 테이블의 부모 row는 표시할 수 없다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
INSTEAD OF DELETE ON NESTED TABLE t1 OF v1
REFERENCING PARENT AS parent FOR EACH ROW
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
INSTEAD OF DELETE ON NESTED TABLE t1 OF v1
REFERENCING PARENT AS parent /* [TODO] RULE-12009 : Parent value of the current row cannot be specified */ FOR EACH ROW
BEGIN
NULL;
END;

RULE-12010#

타입#

TODO

설명#

트리거의 순서를 배치하는 절은 수동으로 변환해야 한다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER 
AFTER DELETE ON t1
FOLLOWS trig2
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER 
AFTER DELETE ON t1
FOLLOWS trig2 /* [TODO] RULE-12010 : Trigger ordering clause must be converted manually */
BEGIN
NULL;
END;

RULE-12011#

타입#

CONVERTED

설명#

REFERENCING절에 생략된 row가 추가되었다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER INSERT ON t1 FOR EACH ROW
BEGIN
:new.c1 := SYSDATE;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER INSERT ON t1
REFERENCING NEW AS new FOR EACH ROW
BEGIN
:new.c1 := SYSDATE;
END;

RULE-12012#

타입#

CONVERTED

설명#

Altibase 예약어에 해당하는 지역(Local) 식별자에 접미사가 추가되었다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER UPDATE ON t1
REFERENCING NEW AS new OLD AS old FOR EACH ROW
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER UPDATE ON t1
REFERENCING NEW AS new_POC OLD AS old_POC FOR EACH ROW
BEGIN
NULL;
END;

RULE-12013#

타입#

REMOVED

설명#

트리거 에디션 절이 제거되었다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER DELETE ON t1
CROSSEDITION
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER DELETE ON t1
/* CROSSEDITION */ /* [REMOVED] RULE-12013 : Trigger edition clause is removed */
BEGIN
NULL;
END;

RULE-12014#

타입#

REMOVED

설명#

ENABLE이 제거되었다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER INSERT ON t1
ENABLE
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER INSERT ON t1
/* ENABLE */ /* [REMOVED] RULE-12014 : ENABLE is removed */
BEGIN
NULL;
END;

RULE-12015#

타입#

TODO

설명#

DISABLE은 수동으로 변환해야 한다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER DELETE ON t1
DISABLE
BEGIN
NULL;
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER DELETE ON t1
DISABLE /* [TODO] RULE-12015 : DISABLE must be converted manually */
BEGIN
NULL;
END;

RULE-12016#

타입#

CONVERTED

설명#

REFERENCING절에서 정의된 row를 참조하는 별칭 앞 콜론(:)이 제거되었다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE INSERT ON t1 FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE(:new.c1);
END;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
BEFORE INSERT ON t1 FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE(new.c1);
END;

RULE-12017#

타입#

REMOVED

설명#

CREATE TRIGGER문에서 PL/SQL block 끝의 trigger label 이름이 제거되었다.

원본 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER INSERT ON t1
BEGIN
NULL;
END trig1;
변환된 SQL 문장#
CREATE OR REPLACE TRIGGER trig1
AFTER INSERT ON t1
BEGIN
NULL;
END /* trig1 */ /* [REMOVED] RULE-12017 : The trigger label name at the end of body has been removed */;