Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> INSERT в Oracle, Как выбрать значение ключа. 
:(
    Опции темы
Kesh
  Дата 27.10.2003, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: нет
Всего: 54



Вопрос, наверное, ламерский, но в самом деле я не знаю, что мне делать с этою бедой wow.gif)...
В БД 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


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Djin
Дата 27.10.2003, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.9.2003

Репутация: нет
Всего: нет



создаешь на свою таблицу people последовательность people_seq, а потом вставку делаешь так

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

и все будет ок, я думаю
PM MAIL   Вверх
Kesh
Дата 30.10.2003, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: нет
Всего: 54



Спасибо...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Hroft
Дата 26.2.2005, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: 1
Всего: 3



Давно разрешилось, но все-таки.
Удобнее повесить на возданную таблицу триггер:
Код
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.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.