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

Откуда:
Сообщений: 63
Например есть таблица USERS с полями
NAME
LAST_NAME
AGE
PRIMARY KEY в таблице нет, но записи есть.

Задача добавить PRIMARY KEY поле ID. Делаю так:
ALTER TABLE "USERS" ADD ( "ID" NUMBER(19) NULL  ) ;

Теперь есть заNULLенный столбец ID.

Как автоматически проставить ID-шники в созданном поле?

Далее можно будет выполнить:
ALTER TABLE "USERS" MODIFY ( "ID" NUMBER(19) NOT NULL  ) ;
ALTER TABLE "USERS" ADD PRIMARY KEY ("ID");


Может скриптик есть у кого готовый?
1 авг 12, 20:31    [12948987]     Ответить | Цитировать Сообщить модератору
 Re: Как автоматически проставить ID-шники в добавленном поле к таблице с данными?  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
update users set id=rownum;
1 авг 12, 20:45    [12949037]     Ответить | Цитировать Сообщить модератору
 Re: Как автоматически проставить ID-шники в добавленном поле к таблице с данными?  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
Еще вот ТОП: Автоинкрементное поле
.
1 авг 12, 20:49    [12949044]     Ответить | Цитировать Сообщить модератору
 Re: Как автоматически проставить ID-шники в добавленном поле к таблице с данными?  [new]
Mindzor
Member

Откуда:
Сообщений: 63
Спасибо за ответ.

Общая последовательность теперь такая:
1) Добавляю ПК:
ALTER TABLE USERS ADD ( "ID" NUMBER(19) NULL  ) ;
UPDATE USERS SET "ID"=ROWNUM;
ALTER TABLE USERS MODIFY ( "ID" NUMBER(19) NOT NULL  ) ;
ALTER TABLE USERS ADD PRIMARY KEY ("ID");

2) Создаю последовательность
create sequence USERS_SEQ
start with 1 /* ВОПРОС: Как сюда вместо 1 подставить последний ID-шник + 1? */
increment by 1
nomaxvalue;

3) Создаю триггер:
create trigger USERS_TRIGGER
before insert on USERS
for each row
begin
select USERS_SEQ.nextval into :new.id from dual;
end;
/
2 авг 12, 04:24    [12949922]     Ответить | Цитировать Сообщить модератору
 Re: Как автоматически проставить ID-шники в добавленном поле к таблице с данными?  [new]
-2-
Member

Откуда:
Сообщений: 15330
Mindzor,

сначала сиквенс, потом апдейт nextval вместо rownum.
2 авг 12, 06:14    [12949943]     Ответить | Цитировать Сообщить модератору
 Re: Как автоматически проставить ID-шники в добавленном поле к таблице с данными?  [new]
antonweb
Member

Откуда:
Сообщений: 262
Mindzor
Спасибо за ответ.

Общая последовательность теперь такая:


1) Создаю последовательность
create sequence USERS_SEQ
start with 1
increment by 1
nomaxvalue;

2) Добавляю ПК:
ALTER TABLE USERS ADD ( "ID" NUMBER(19) NULL  ) ;
UPDATE USERS SET "ID"=USERS_SEQ.nextval ;
ALTER TABLE USERS MODIFY ( "ID" NUMBER(19) NOT NULL  ) ;
ALTER TABLE USERS ADD PRIMARY KEY ("ID");

3) Создаю триггер:
create trigger USERS_TRIGGER
before insert on USERS
for each row
begin
select USERS_SEQ.nextval into :new.id from dual;
end;
/
2 авг 12, 09:31    [12950238]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить