Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Ошибка при создании триггера


Автор: Yugine 20.8.2007, 19:24
Создаю триггеры для автоматического заполнения ключевых полей таблиц.
Например:
такая таблица:
Код

CREATE TABLE "BTGUSER"."DEVICES" ("ID" NUMBER NOT NULL, "TYPEID" 
    NUMBER, "MODEL" VARCHAR2(100), PRIMARY KEY("ID"), 
    UNIQUE("MODEL"), FOREIGN KEY("TYPEID") 
    REFERENCES "BTGUSER"."TYPES"("ID") ON DELETE CASCADE)  
    TABLESPACE "SC" 


создаю триггер на нее следующим образом:
Код

CREATE OR REPLACE TRIGGER "BTGUSER"."DEV_TRIGGER"
BEFORE INSERT ON BTGUSER.DEVICES
FOR EACH ROW

DECLARE
BEGIN

SELECT "BTGUSER".DEV_SEQUENCE.NEXTVAL INTO:NEW."ID" FROM SYS."DUAL";
END;


Триггер благополучно создается.

Есть таблица, для которой я создаю триггер аналогичным образом, но при этом вылазят ошибки:
вот таблица:
Код

CREATE TABLE "BTGUSER"."IN_REPAIRING" ("ID" NUMBER NOT NULL, 
    "PRIEM_ID" NUMBER NOT NULL, "TASK_GIVER_ID" NUMBER NOT NULL, 
    "WORKER_ID" NUMBER NOT NULL, "DATE" DATE NOT NULL, "END_DATE"
    DATE NOT NULL, "NOTES" VARCHAR2(200), PRIMARY KEY("ID"), 
    FOREIGN KEY("PRIEM_ID") 
    REFERENCES "BTGUSER"."POSTUPLENIA"("ID") ON DELETE CASCADE, FOREIGN 
    KEY("TASK_GIVER_ID") 
    REFERENCES "BTGUSER"."EMPLOYEES"("ID"), FOREIGN 
    KEY("WORKER_ID") 
    REFERENCES "BTGUSER"."EMPLOYEES"("ID"))  
    TABLESPACE "SC" 


триггер для нее создаю так:
Код

CREATE OR REPLACE TRIGGER "BTGUSER"."REPAIR_TRIGGER"
BEFORE INSERT ON BTGUSER.IN_REPAIRING
FOR EACH ROW

DECLARE
BEGIN

SELECT "BTGUSER".REP_SEQUENCE.NEXTVAL INTO:NEW."ID" FROM SYS."DUAL";
END;


при этом вылазит ошибка:
BEFORE INSERT ON BTGUSER.IN_REPAIRING
                         *
ERROR at line 2:
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-320: the declaration of the type of this expression is incomplete or malformed

Автор: Exception 20.8.2007, 20:34
Нехорошо называть поля таблицы ключевыми словами.
http://www.sql.ru/forum/actualthread.aspx?tid=54271

Автор: Yugine 21.8.2007, 23:17
Да, проблема была именно в этом. Спасибо за помощь!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)