буксую на ровном месте

komrad
Дата: 02.12.2009 17:48:14
Коллеги, помогите!

Вкратце: хочу сделать автоинкремент. Таблица есть, сиквенс есть, триггер before insert есть. Запись значения не проходит, если id не указывать (если указывать, то тоже). Работаю под пользователем HWDB в одноименной схеме, объекты там же.

Запрос:
insert into "Location" ("location_name","location_desc") values ('1','2')

Диагностика:
автор
[SQL] insert into "Location" ("location_name","location_desc") values ('1','2')
[Err] ORA-04098: trigger 'HWDB.tr_Location_bi' is invalid and failed re-validation


Подскажите, где ошибка?

скрипты :

create sequence "S_Location"
start with 1
increment by 1;

create table "Location" 
(
   "location_id"        NUMBER(6)            not null,
   "location_name"      VARCHAR2(50),
   "location_desc"      VARCHAR2(50),
   constraint PK_LOCATION primary key ("location_id")
);


CREATE TRIGGER HWDB."tr_Location_bi"
 BEFORE INSERT ON HWDB."Location"
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
BEGIN
  select "S_Location".nextval into :new.location_id from dual;
END;
andrey_anonymous
Дата: 02.12.2009 17:52:12
komrad

Подскажите, где ошибка?
create table "Location" 
(
   "location_id"        NUMBER(6)            not null,
   "location_name"      VARCHAR2(50),
   "location_desc"      VARCHAR2(50),
   constraint PK_LOCATION primary key ("location_id")
);


BEGIN
  select "S_Location".nextval into 
  :new.location_id from dual;
END;

komrad, не знаете зачем нужны двойные кавычки - НЕ ПОЛЬЗУЙТЕСЬ ими.
komrad
Дата: 02.12.2009 17:55:25
andrey_anonymous

komrad, не знаете зачем нужны двойные кавычки - НЕ ПОЛЬЗУЙТЕСЬ ими.


с удовольствием!
однако простой запрос
select * from Location;
выдает
автор
ORA-00942: table or view does not exist


если кавычки не указывать
juras
Дата: 02.12.2009 17:55:27
komrad,

уж если вы-тесь, то до конца:


CREATE TRIGGER HWDB."tr_Location_bi"
 BEFORE INSERT ON HWDB."Location"
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
BEGIN
  select "S_Location".nextval into :new. "location_id" from dual;
END;
andrey_anonymous
Дата: 02.12.2009 17:56:54
komrad

если кавычки не указывать

Говорю же - не знаете зачем - НЕ ПОЛЬЗУЙТЕСЬ.
Много времени и нервов сохраните и себе и окружающим :)
juras
Дата: 02.12.2009 17:57:42
komrad,

так создавайте без ковычек обекты и будет вам счастье...
komrad
Дата: 02.12.2009 18:03:02
juras
komrad,

так создавайте без ковычек обекты и будет вам счастье...

:)) спасибо, без них будет проще!

объекты рисовал в дизайнере и как-то не придал значения кавычками в авто-сгенерированном коде...

кстати, juras, Ваш вариант сработал!
komrad
Дата: 02.12.2009 18:04:11
andrey_anonymous
komrad

если кавычки не указывать

Говорю же - не знаете зачем - НЕ ПОЛЬЗУЙТЕСЬ.
Много времени и нервов сохраните и себе и окружающим :)

это точно! часа полтора убил копаясь в инете.

если не сложно, киньте плз ссылкой на описание "волшебства" кавычек!
juras
Дата: 02.12.2009 18:04:23
komrad,

:) иначе бы не постил
andrey_anonymous
Дата: 02.12.2009 18:06:01
komrad
если не сложно, киньте плз ссылкой на описание "волшебства" кавычек!

Идентификаторы в кавычках передаются as is, без - транслируются в uppercase, обеспечивая таким образом регистронезависимость.