Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Последовательности 
:(
    Опции темы
Гость_Taty
Дата 29.4.2005, 15:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть таблица. В нее добавляется новое поле, которое должно стать уникальным номером. Я создала последов-сть, и мне нужно старые записи из этой таблицы про-updatе-ить, чтоб у них у всех появился номер. Не могу никак сделать. А для новых записей триггер должен заполнять поле номер, беря опять же след.значение из seqence. С этим вроде все ясно. А вот первая проблема.... помогите)
  Вверх
igon
Дата 30.4.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Код

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



--------------------
Хотите поговорить об этом?
PM   Вверх
LSD
Дата 3.5.2005, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Можно так
Код
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



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Гость_Taty
Дата 4.5.2005, 12:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пасиб! smile Я сделала как в первом варианте.. все получилось smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.