powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / auto - incerement ...
9 сообщений из 9, страница 1 из 1
auto - incerement ...
    #32059754
gda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
auto - incerement ...
    #32059770
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE + TRIGGER BEFORE INSERT RAW
...
Рейтинг: 0 / 0
auto - incerement ...
    #32059771
Vlad_P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В оракле нет автоинкрементных полей. Во всяком случае до 8-го релиза включительно.
Пользуйтесь генератором Sequense и триггерами BEFORE_INSERT.
...
Рейтинг: 0 / 0
auto - incerement ...
    #32059777
gda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rebeata pokajite no concretnom primere, please ...
...
Рейтинг: 0 / 0
auto - incerement ...
    #32059795
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
auto - incerement ...
    #32059815
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
auto - incerement ...
    #32059867
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я даже знаю, какой следующий вопрос будет у автора топика - "почему последовательность получается с пропусками?"

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

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


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