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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Autoincrement field 
V
    Опции темы
Fighter
Дата 15.2.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да, вы наверное уже видели эти вопросы в других темах, но теперь хочется узнать, как автоинкремент создавать в оракуле. 

Я скачал Oracle 10i XE, использую SQL Navigator. Я не знаю какие вы варианты предложите, но я начал делать через последовательности.
Создал последовательность, а вот что в триггере писать не знаю, еще интересно, какой триггер нужно создавать before или after insert?

В общем, как бы вы организовали автоикрементное поле?
PM MAIL   Вверх
Sqlninja
Дата 16.2.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 15.5.2006
Где: San Francisco, CA

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



последовательность - самый нормальный способ, только никаких триггеров писать не нужно. просто делай с каждой вставкой 

Код

insert into x (pk, name) values (my_seq.NEXTVAL, 'foo');


Это сообщение отредактировал(а) Sqlninja - 16.2.2007, 10:33


--------------------
It's better to burn out than to fade away.
PM MAIL WWW ICQ   Вверх
LSD
Дата 16.2.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(Fighter @  15.2.2007,  23:26 Найти цитируемый пост)
Создал последовательность, а вот что в триггере писать не знаю, еще интересно, какой триггер нужно создавать before или after insert?

BEFORE INSERT
Код
CREATE OR REPLACE TRIGGER TABLE1_INS_TRG
    BEFORE INSERT ON TABLE1
    FOR EACH ROW
    
DECLARE

BEGIN
    
    SELECT TRG.NEXTVAL 
        INTO :NEW.ID 
    FROM DUAL;

END TABLE1_INS_TRG;



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Fighter
Дата 16.2.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Чё-то не айс. Пишет что триггер инвалид.
PM MAIL   Вверх
LSD
Дата 17.2.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



А текст ошибки это секрет фирмы? smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Fighter
Дата 17.2.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Блин, а теперь вот запахало. Сначала в SQL навигаторе триггер красным высвечивался. Ну это вчера было, а вот сегодня я попробовал - и все вообще нормально стало, все как надо.

Добавлено @ 21:16 
А можно теперь объяснить эту конструкцию:

Код

   SELECT TRG.NEXTVAL 
        INTO :NEW.ID 
    FROM DUAL;

?

Ну, в общем-то TRG - это я так понял название последовательности, далее вроде понятно все, вот самый вопрос - это вот про dual, что это такое, я знаю что это какая-то таблица, но почему именно DUAL?
PM MAIL   Вверх
LSD
Дата 17.2.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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





--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
batigoal
Дата 18.2.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Fighter, это просто специальная Оракловая таблица из одного столбца и одной строки.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Paradox
Дата 2.3.2007, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



потому что в оракле нет селектов без фразы FROM


--------------------
---
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

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

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

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

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

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


 




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


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

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