Последовательности

 
0
 
Oracle
ava
guest | 29.04.2005, 16:18
Есть таблица. В нее добавляется новое поле, которое должно стать уникальным номером. Я создала последов-сть, и мне нужно старые записи из этой таблицы про-updatе-ить, чтоб у них у всех появился номер. Не могу никак сделать. А для новых записей триггер должен заполнять поле номер, беря опять же след.значение из seqence. С этим вроде все ясно. А вот первая проблема.... помогите)
Comments (3)
ava
igon | 30.04.2005, 00:23 #

Update MyTable A
Set a.NewField = Rownum


Потом смотришь максимальный номер (или, что то же самое, число строк в таблице), например, 1000
Пересоздаешь свой sequence, в котором для start with указываешь 1001 (т.е. 1000+1)


create sequence My_SEQ
minvalue 1
maxvalue 9999999999
start with 1001
increment by 1
cache 20;


Другой вариант, более время- и трудоемкий - создать хранимую, в ней открыть курсор, в который выбрать всю таблицу, и затем в цикле Update каждой записи с использованием NextVal из твоего sequence
ava
LSD | 03.05.2005, 20:42 #
Можно так
update (select id from seq_test order by text desc) set id = seq1.nextval;

при этом данные можно упорядочить, если есть такая потребность, но возможно перед этим надо будет выполнить
alter table seq_test disable constraint seq_test_pk

а потом
alter table seq_test enable constraint seq_test_pk
ava
guest | 04.05.2005, 12:34 #
Пасиб! smile Я сделала как в первом варианте.. все получилось smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  guest ava  LSD   igon
advanced
Submit