Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / auto - incerement ... / 9 сообщений из 9, страница 1 из 1
18.10.2002, 15:23
    #32059754
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
Mojno li pri sozdanie cacoito tablite, cacomuto cislovomu poliu(id naprimer) zadati initialinoie znacenie naprimer 0(zero), a potom pri dabovlenie novih zapisei znacenie polia(id) uvilicivilasi na edinitu sama. Tipa cac auto_increment v MySQL...
...
Рейтинг: 0 / 0
18.10.2002, 15:30
    #32059770
Trampler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
SEQUENCE + TRIGGER BEFORE INSERT RAW
...
Рейтинг: 0 / 0
18.10.2002, 15:32
    #32059771
Vlad_P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
В оракле нет автоинкрементных полей. Во всяком случае до 8-го релиза включительно.
Пользуйтесь генератором Sequense и триггерами BEFORE_INSERT.
...
Рейтинг: 0 / 0
18.10.2002, 15:34
    #32059777
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
Rebeata pokajite no concretnom primere, please ...
...
Рейтинг: 0 / 0
18.10.2002, 15:53
    #32059795
Trampler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
CREATE TABLE TEST_TABLE
    (id                             NUMBER( 38 , 0 ) NOT NULL,
     code                       VARCHAR2( 32 ) NOT NULL
     )
/
CREATE SEQUENCE test_seq
  INCREMENT BY  1 
  START WITH  1 
  MINVALUE  1 
  MAXVALUE  999999999999999999999999999 
  NOCYCLE
  NOORDER
  NOCACHE
/
CREATE OR REPLACE TRIGGER test_trig_BIR
 BEFORE
  INSERT
 ON Test_TABLE
REFERENCING NEW AS NEW OLD AS OLD
 FOR EACH ROW
begin 
if :new.id is null then
select test_seq.nextval 
into :new.id
from sys.dual;
end if;
end;
/
...
Рейтинг: 0 / 0
18.10.2002, 16:06
    #32059815
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
1) Вы создаёте последовательность, например

Код: plaintext
1.
2.
3.
CREATE SEQUENCE my_seq
INCREMENT BY  1 
START WITH  1 


2) Создаёте для таблицы триггер, например

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
СREATE OR REPLACE TRIGGER my_trg
 BEFORE INSERT
 ON my_table
REFERENCING NEW AS NEW OLD AS OLD
 FOR EACH ROW
begin 
  select my_seq.nextval 
     into :new.id 
    from dual;
/


В этом триггере указано, что для каждой новой вставляемой строки столбцу id присваивать следующее значение из последовательности, которую вы создали
...
Рейтинг: 0 / 0
18.10.2002, 17:32
    #32059867
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
я даже знаю, какой следующий вопрос будет у автора топика - "почему последовательность получается с пропусками?"

Поэтому, чтоб человек не нервничал, надо сразу предупреждать, что значения будут уникальными, но не автоинкрементными.
...
Рейтинг: 0 / 0
18.10.2002, 18:09
    #32059892
Vlad_P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
Это, по-моему, лечится указанием NOCASHE при создании sequense, если проиводительность не очень волнует.
...
Рейтинг: 0 / 0
18.10.2002, 19:20
    #32059907
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
auto - incerement ...
>Это, по-моему, лечится указанием NOCASHE при создании
>sequense, если проиводительность не очень волнует.

Нет, NOCACHE поможет только от шатдауна инстанса, а если был rollback транзакции, которая делает инсерт в таблицу, то дырка в последовательности останется.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / auto - incerement ... / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]