INSERT в Oracle

 
0
 
Oracle
ava
Kesh | 27.10.2003, 00:26
Вопрос, наверное, ламерский, но в самом деле я не знаю, что мне делать с этою бедой :0)...
В БД Oracle есть таблица, имеющая приблизительно следующий вид


create table people
(id number primary key,
name varchar2(90) not null unique,
birthday date);


Мне нужно организовать вставку новых данных в таблицу из программы на Delphi через TOraQuery, но проблема в том, что я не знаю как делать вставку с уникальным индексом (id).
Может быть можно как-нибудь создавать таблицу, чтобы вставку можно было осуществлять без указания ключа, чтобы Oracle сам его подбирал? Тогда можно было бы делать так...

insert into people (name,birthday) values ('Kesh',ToDate(30.10.1983,'dd.mm.yyyy'));


Подскажите что мне делать...
Заранее спасибо...


P.S. Может заодно порекомендуете хорошие книги по PL-SQL, Oracle
Comments (3)
ava
Djin | 27.10.2003, 16:55 #
создаешь на свою таблицу people последовательность people_seq, а потом вставку делаешь так

insert into people(id, name, birthday)
select people_seq.nextval, 'Kesh', ToDate('30.10.1983', 'dd.mm.yyyy')
from dual;

и все будет ок, я думаю
ava
Kesh | 30.10.2003, 15:26 #
Спасибо...
ava
Hroft | 26.02.2005, 13:07 #
Давно разрешилось, но все-таки.
Удобнее повесить на возданную таблицу триггер:
create or replace trigger <имя таблицы>_ai_trig
before insert on <имя таблицы>
for each row
declare
-- local variables here
begin
select <имя таблицы>_seq.nextval into :new.<имя таблицы>_key from dual;
end <имя таблицы>_ai_trig;

Тот же самый автоинкремент получается.
Мнемоника:
ai - auto increment, trig - чтобы из USER_OBJECTS было удобно вытаскивать, seq - sequence smile, суффикс _key - мне так нравится smile.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Kesh   Djin   Hroft
advanced
Submit