Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 oracle и триггеры  [new]
Василий Теркин
Member

Откуда:
Сообщений: 164
Коллеги, всем доброго дня!

Всю жизнь работал с MS и My, а тут по воле долга пришлось разбираться в оракле. Стал делать триггер, простейший, но не выходит.

имеем:
таблица раз
  CREATE TABLE "STAT"."t1" 
   (	"a" NUMBER(*,0), 
	"stamp" NUMBER(*,0)
   ) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "NMC" 

таблица два:
  CREATE TABLE "STAT"."t2" 
   (	"b" NUMBER(*,0)
   ) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "NMC" 

делаю триггер:
CREATE OR REPLACE TRIGGER "STAT"."tr" 
AFTER INSERT ON "STAT"."t1" 
REFERENCING OLD AS "OLD" NEW AS "NEW" 
FOR EACH ROW ENABLE
BEGIN
INSERT INTO "STAT"."t2"(b) VALUES (:NEW.a);
END "STAT"."tr";
/

В итоге триггер ни разу не хочет работать, при попытке компильнуть его пишет:
ORA-24344: success with compilation error

Но сохраняется

При попытке записи в таблицу t1 пишет:
ORA-04098 trigger STAT"."tr" is invalid and failed re-validation


Подскажите пожалуйста, что тут не так?
9 июн 11, 12:01    [10788474]     Ответить | Цитировать Сообщить модератору
 Re: oracle и триггеры  [new]
SQLap
Member [заблокирован]

Откуда:
Сообщений: 34063
Василий Теркин
END "STAT"."tr";


а почему просто не написать END; ?
9 июн 11, 12:04    [10788503]     Ответить | Цитировать Сообщить модератору
 Re: oracle и триггеры  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Василий Теркин,

для начала -
sho err
9 июн 11, 12:04    [10788506]     Ответить | Цитировать Сообщить модератору
 Re: oracle и триггеры  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
Василий Теркин
  CREATE TABLE "STAT"."t1" 
   (	"a" NUMBER(*,0), 
	"stamp" NUMBER(*,0)
   )

таблица два:
  CREATE TABLE "STAT"."t2" 
   (	"b" NUMBER(*,0)
   )

делаю триггер:
CREATE OR REPLACE TRIGGER "STAT"."tr" 
AFTER INSERT ON "STAT"."t1" 
REFERENCING OLD AS "OLD" NEW AS "NEW" 
FOR EACH ROW ENABLE
BEGIN
INSERT INTO "STAT"."t2"(b) VALUES (:NEW.a);
END "STAT"."tr";
/

В итоге триггер ни разу не хочет работать, при попытке компильнуть его пишет:
ORA-04098 trigger STAT"."tr" is invalid and failed re-validation


Так надо смотреть что за ошибка. В какой среде пишешь?
9 июн 11, 12:06    [10788523]     Ответить | Цитировать Сообщить модератору
 Re: oracle и триггеры  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
Василий Теркин,

потому что кавычки либо везде - либо нигде, тогда голова болеть не будет
"t2"("b") VALUES (:NEW."a");
9 июн 11, 12:19    [10788679]     Ответить | Цитировать Сообщить модератору
 Re: oracle и триггеры  [new]
Василий Теркин
Member

Откуда:
Сообщений: 164
SQLap
Василий Теркин
END "STAT"."tr";


а почему просто не написать END; ?


не могу сказать, зачем я это написал, ранее действительно было END; но ошибка сохранялась

Alexander Konakov
Василий Теркин,

потому что кавычки либо везде - либо нигде, тогда голова болеть не будет
"t2"("b") VALUES (:NEW."a");


а вот этот совет - в точку! ))) спасиб большущее всем откликнувшимся!!!!
9 июн 11, 13:01    [10789108]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить