auto increment, последовательности и Cannot insert null

Divanov
Дата: 09.08.2005 18:11:59
Т.к. ораклом занимаюсь недавно, впервые пришлось создавать последовательность и триггер для реализации auto inctement поля id таблицы.

Последовательность:

create sequence PORTAL.message_seq
start with 2
increment by 1
nomaxvalue;

Триггер:

create trigger PORTAL.message_trigger
before insert on PORTAL.MESSAGE
for each row
begin
select PORTAL.MESSSAGE_SEQ.nextval into :new.id from dual;
end;

Операция вставки:

insert into PORTAL.MESSAGE(subject,content,dt,seen,fromid)
values('Тест - 223','Тест','09-aug-2005',0,1);

SQLPlus на эту команду пишет
cannot insert null into ("PORTAL.MESSAGE.ID")

А SCratchPad в Enterprise Management Console на неё же пишет:
ORA-00900 - Invalid SQL Statement.

В чём тут может быть дело?
P.S. Oracle 9.2 for Windows
Vadim_Maximov
Дата: 09.08.2005 18:15:20
Ну во-первых внимательно смотрим и ищем отличия...
create sequence PORTAL.message_seq 
create trigger PORTAL.message_trigger
before insert on PORTAL.MESSAGE
for each row
begin
select PORTAL.MESSSAGE_SEQ.nextval into :new.id from dual;
end;
softwarer
Дата: 09.08.2005 18:17:31
Divanov
В чём тут может быть дело?

В том, что где-то допущена ошибка. Гадать, где именно - дурное занятие, надо смотреть.

Прежде всего, добавьте в триггер строку

dbms_output.put_line ( 'Триггер вообще вызван' );

У меня почему-то есть серьезное подозрение, что то ли триггер таки не создан, то ли создан, но не на ту таблицу, то ли еще что-нибудь.

Для того, чтобы увидеть это сообщение, нужно в SQL*Plus дать команду

set serveroutput on;

и затем собственно insert. Если выводится - напечатать значения :new.id до и после операции. И так далее - пока не будет понятно, где затык.
Oleg Afanasiev
Дата: 09.08.2005 18:18:04
Vadim_Maximov
Ну во-первых внимательно смотрим и ищем отличия...

Класссссс :)
softwarer
Дата: 09.08.2005 18:20:07
Vadim_Maximov

Cомневаюсь, что дело в этом. Тогда во-первых было бы Trigger created with errors, а во-вторых вставка давала бы ругань на invalid and failed re-validation.
Vadim_Maximov
Дата: 09.08.2005 18:20:47
Vadim_Maximov
Ну во-первых внимательно смотрим и ищем отличия...
softwarer
Дата: 09.08.2005 18:22:37
Vadim_Maximov

Имхо уже не так рано, чтобы последовательно добираться до "в десятых"
Divanov
Дата: 09.08.2005 18:38:34
Всем спасибо. Удалили последовательность и триггер,создал заново, везде соблюдая одинаковый регистр - всё заработало.
При этом надо отметить, что в первоначальном варианте, когда не работало,
команда
show errors trigger PORTAL.MESSAGE_TRIGGER выдавала 'no errors'.
Stax.
Дата: 09.08.2005 19:39:30
причем сдесь регистр,
'SS'<>'SSS'
Vadim_Maximov
Дата: 10.08.2005 10:36:46
Divanov
Всем спасибо. Удалили последовательность и триггер,создал заново, везде соблюдая одинаковый регистр - всё заработало.
При этом надо отметить, что в первоначальном варианте, когда не работало,
команда
show errors trigger PORTAL.MESSAGE_TRIGGER выдавала 'no errors'.
Значит вы нас в чем-то обманули... :)