SQL.RU
 client/server technologies
 
 Главная | Документация | Статьи | Книги | Форум | Опросы | Рассылка | Работа | Поиск | FAQ |

Добро пожаловать в форум, Guest  >>  Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик  Ответить
 Автоинкриментное поле   [new]
vitall538
Member

Откуда:
Сообщений: 40
Уважаемые Гуру, для создания автоинкриментного поля вы создаете sequences и потом пишете триггер с ...NextValue? Или существут более более грамотные способы?
7 апр 08, 16:39    [5513680] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
tru55
Member

Откуда: СПб
Сообщений: 15292
ТОП популярных вопросов
7 апр 08, 16:41    [5513689] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
badmintonist
Member

Откуда:
Сообщений: 330
tru55
ТОП популярных вопросов
+1

Также можете поискать по форуму, это далеко не первый такой вопрос.

По сабжу sequences и есть "более более" гработный способ, а вот триггер необходим далеко не всегда, значение из последовательности можно и непосредственно в insert получать
7 апр 08, 16:45    [5513722] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
vitall538
Member

Откуда:
Сообщений: 40
Спасибо, это и хотел услышать
7 апр 08, 16:51    [5513785] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
guest19
Guest
badmintonist
tru55
ТОП популярных вопросов
+1

Также можете поискать по форуму, это далеко не первый такой вопрос.

По сабжу sequences и есть "более более" гработный способ, а вот триггер необходим далеко не всегда, значение из последовательности можно и непосредственно в insert получать


У Вас 11g?
7 апр 08, 17:46    [5514316] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
guest19
У Вас 11g?


А это имеет значение ? :)
7 апр 08, 17:48    [5514327] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
guest19
Guest
Дубовая голова
guest19
У Вас 11g?


А это имеет значение ? :)


непосредственно в insert:)
7 апр 08, 17:51    [5514341] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 2254
Дубовая голова
guest19
У Вас 11g?


А это имеет значение ? :)

Да вроде с 11 можно прикрутить счетчик без триггера. Дет у них было в презентациях.
7 апр 08, 17:51    [5514346] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
guest19
непосредственно в insert:)


А что, до 11G это сделать было нельзя ? Впервые слышу.
Поделитесь сокровенным знанием ?
7 апр 08, 17:52    [5514350] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
semenar
Да вроде с 11 можно прикрутить счетчик без триггера. Дет у них было в презентациях.


С удовольствием погляжу, как это так :) Поделитесь.
7 апр 08, 17:53    [5514367] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
guest19
Guest
Дубовая голова
guest19
непосредственно в insert:)


А что, до 11G это сделать было нельзя ? Впервые слышу.
Поделитесь сокровенным знанием ?


insert into t values (seq.nextval, .....) 
c 11g

до
select seq.nextval into idv from dual;
insert into t values (idv, ....)  
7 апр 08, 17:57    [5514402] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
badmintonist
Member

Откуда:
Сообщений: 330
semenar
Да вроде с 11 можно прикрутить счетчик без триггера. Дет у них было в презентациях.
О таком не слышал, хотя с 11g не работал, вроде в одиннадцатой версии можно в триггере написать :New.Id := My_Seq.Nextval вместо select My_Seq.Nextval into :New.Id from dual это типа новые возможности pl/sql :-)
7 апр 08, 17:58    [5514406] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
Jannny
Member

Откуда: Спб
Сообщений: 6425
guest19
Дубовая голова
guest19
непосредственно в insert:)

А что, до 11G это сделать было нельзя ? Впервые слышу.
Поделитесь сокровенным знанием ?

insert into t values (seq.nextval, .....) 
c 11g

до
select seq.nextval into idv from dual;
insert into t values (idv, ....)  
Вроде первое апреля прошло уже...
7 апр 08, 17:59    [5514416] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
badmintonist
Member

Откуда:
Сообщений: 330
guest19
insert into t values (seq.nextval, .....) 
c 11g

до
select seq.nextval into idv from dual;
insert into t values (idv, ....)  
бред
7 апр 08, 18:00    [5514420] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
guest19
Guest
Jannny
guest19
Дубовая голова
guest19
непосредственно в insert:)

А что, до 11G это сделать было нельзя ? Впервые слышу.
Поделитесь сокровенным знанием ?

insert into t values (seq.nextval, .....) 
c 11g

до
select seq.nextval into idv from dual;
insert into t values (idv, ....)  
Вроде первое апреля прошло уже...


Про непосредственно в insert может и да 1 апреля:) - не пробовал прооняли на презентации давно
7 апр 08, 18:02    [5514438] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
Proteus
Member

Откуда:
Сообщений: 1185
guest19


до
select seq.nextval into idv from dual;
insert into t values (idv, ....)  


или так
insert into t 
select seq.nextval .... from dual;
7 апр 08, 18:02    [5514442] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
guest19
insert into t values (seq.nextval, .....) 
c 11g

до
select seq.nextval into idv from dual;
insert into t values (idv, ....)  


А сам проверить свои фантазии не желаешь ?

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL> create sequence sq1;

Sequence created.

SQL> create table t_seq (x int);

Table created.

SQL> insert into t_seq values(sq1.nextval);

1 row created.

Срочно читать документацию по 10G и 9I. Когда освоишь - будешь делиться
откровениями.

P.S. Клонов одного чудака развелось - не продохнуть.
7 апр 08, 18:02    [5514450] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 2254
Дубовая голова
semenar
Да вроде с 11 можно прикрутить счетчик без триггера. Дет у них было в презентациях.


С удовольствием погляжу, как это так :) Поделитесь.

Ввел в заблуждение, там так:
Straight Sequences
When you had to use a sequence in a PL/SQL program earlier, you had to use a construct like SELECT <Seq>.NEXTVAL INTO <VariableName> FROM DUAL prior to this release.

declare
        trans_id number(10);
begin
        select myseq.nextval
        into trans_id
        from dual;
end;

Not anymore. You can directly assign the next value of a sequence to a variable: 
declare
        trans_id number(10);
begin
        trans_id := myseq.nextval;
end;
/

Now, that's what I call simplicity. 
Подробности тут.
7 апр 08, 18:06    [5514477] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
badmintonist
Member

Откуда:
Сообщений: 330
Дубовая голова
P.S. Клонов одного чудака развелось - не продохнуть.
?
7 апр 08, 18:11    [5514521] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
semenar
Now, that's what I call simplicity. [/src]Подробности тут.


Именно :)
Фокус-покус, типа:

SQL> select * from v$version;

BANNER
-----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE    11.1.0.6.0      Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SQL> create sequence dummy_seq;

Sequence created.

SQL> var x number
SQL> exec :x := dummy_seq.nextval

PL/SQL procedure successfully completed.

SQL> print x

         X
----------
         1

Только есть в этом всем одна маленькая хохма (опосля трассировки 10046):

declare x int; begin x := dummy_seq.nextval; end;


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.16          0          0          0           0
Execute      1      0.00       0.02          0          0          0           1
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.18          0          0          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 20  

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.01          0.01
********************************************************************************

Select DUMMY_SEQ.NEXTVAL 
from
 dual


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.04          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      0.00       0.00          0          0          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.00       0.04          0          0          0           1

Т.е. этакое синтаксическое облегчение :)
7 апр 08, 18:15    [5514544] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
badmintonist
?[/quot]

Угу :)
7 апр 08, 18:16    [5514547] Ответить | Цитировать    Сообщить модератору

 Re: Автоинкриментное поле   [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 8335
Дубовая голова

semenar
Now, that's what I call simplicity. [/src]Подробности тут.


Именно :)
Фокус-покус, типа:
..
Т.е. этакое синтаксическое облегчение :)


гыы.. стиль узнаваем..
7 апр 08, 18:23    [5514599] Ответить | Цитировать    Сообщить модератору

Все форумы / Oracle Ответить
Generated time: 171ms.
Rambler's Top100 Powered by ActualForum 1.5.3 [s1] Copyright (c) Alex Sibilev 2000-2010