Страница 1 из 1
Новое ключевое поле в заполненной таблице
Добавлено: 10 сен 2007, 11:04
Nat
Вопрос к заслуженным и знающим...
К таблице, уже заполненной до этого некоторыми записями, необходимо добавить ключевое автоинкрементное поле. Возможно ли простым запросом добиться заполения этого поля в существующих записях автоинкрементными значениями, после чего будет создан генератор, заполняющий уже новые записи соответственно.
То есть интересует заполняющий это поле существующих записей запрос. Можно ли при этом обойтись без процедур, датасетов и пр. - одним запросом...?
Добавлено: 10 сен 2007, 11:18
kdv
сначала надо создать столбец. затем генератор. потом заполнить его ОДНИМ запросом (update), с использованием генератора. Все. генератор останется на последнем значении, его можно использовать дальше.
Добавлено: 10 сен 2007, 11:31
Nat
Спасибо! Весьма благодарен.
Добавлено: 10 сен 2007, 11:46
WildSery
После создания поля и заполнения его значениями с помощью update, но перед построением PK по нему, необходимо собрать мусор в таблице, например с помощью select count(*) from table. Иначе создание PK не пройдёт.
Добавлено: 10 сен 2007, 11:53
Nat
Спасибо!
Добавлено: 10 сен 2007, 13:25
hvlad
WildSery писал(а):После создания поля и заполнения его значениями с помощью update, но перед построением PK по нему, необходимо собрать мусор в таблице, например с помощью select count(*) from table. Иначе создание PK не пройдёт.
Это что-то новое в нашей практике. И пример есть ?
Добавлено: 10 сен 2007, 15:26
WildSery
hvlad писал(а):Это что-то новое в нашей практике. И пример есть ?
Пардон.
Это не новое, это старое.
Сейчас проверил -
на FB2 такого нет.
Зато вот
1.0.3 выдаёт
"Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$PRIMARY123".
null segment of UNIQUE KEY."
ЗЫ: Влад, я тебя тут, в PM, просил патчик для "215" к 2.0.1, ещё некогда было выслать?
Добавлено: 10 сен 2007, 15:45
kdv
Это что-то новое в нашей практике. И пример есть ?
было. а если еще в это время другая транзакция мусор не даст собрать, то и на 2.0 не пройдет

wildsery прав, я и сам про такую фишку забыл. версионность, тудыть...
Добавлено: 10 сен 2007, 15:46
hvlad
WildSery писал(а):hvlad писал(а):Это что-то новое в нашей практике. И пример есть ?
Пардон.
Это не новое, это старое.
Сейчас проверил -
на FB2 такого нет.
Зато вот
1.0.3 выдаёт
"Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$PRIMARY123".
null segment of UNIQUE KEY."
Код, который за это отвечает, есть давным давно, проверять исходники 1.х - лениво
WildSery писал(а):ЗЫ: Влад, я тебя тут, в PM, просил патчик для "215" к 2.0.1, ещё некогда было выслать?
Не обратил внимания, сорри. Вышлю вечером