Страница 1 из 1
Добавление столбца с ограничением первичного ключа
Добавлено: 25 окт 2005, 12:44
Naidenov
Доброго времени суток, господа корифеи.
Столкнулся с такой проблемой: при добавлении к таблице с уже существующими данными нового столбца с ограничением первичного ключа, нельзя изменить значения для существовавших записей для этого столбца. Т.е. столбец добавляется корректно и не сообщается о каких-либо ошибках, но для всех существовавших в момент добавления записей, значения этого столбца проставляются в Null, после чего "руками" не изменяются (т.е. "отказываются подтверждаться").
Вопрос: почему значения нельзя изменить руками? Как заполнить это поле, не удалив предварительно ограничение первичного ключа?
Re: Добавление столбца с ограничением первичного ключа
Добавлено: 25 окт 2005, 14:24
SAMZ
Naidenov писал(а):Доброго времени суток, господа корифеи.
Столкнулся с такой проблемой: при добавлении к таблице с уже существующими данными нового столбца с ограничением первичного ключа, нельзя изменить значения для существовавших записей для этого столбца. Т.е. столбец добавляется корректно и не сообщается о каких-либо ошибках, но для всех существовавших в момент добавления записей, значения этого столбца проставляются в Null, после чего "руками" не изменяются (т.е. "отказываются подтверждаться").
Вопрос: почему значения нельзя изменить руками? Как заполнить это поле, не удалив предварительно ограничение первичного ключа?
Как-то это странно. Мне казалось, что в столбце с ограничением первичного ключа вообще не может быть Null значений. Вопрос сформулирован правильно?
Добавлено: 25 окт 2005, 14:34
kdv
ээээээ..
1. таблица не имеет ПК
2. добавляем столбец
3. ЗАПОЛНЯЕМ ЗНАЧЕНИЯМИ. потому что добавление столбца НЕ МЕНЯЕТ данные существующих записей
4. создаем constraint PK_TABLE primary key (столбец).
все.
Добавлено: 25 окт 2005, 15:21
Merlin
Имхо это бага. То, что на поле, содержащее null, позволяется нынче создавать PK. Имхо когда нулл в unique разрешили, погорячились и задели этот кусок.
Добавлено: 25 окт 2005, 16:12
Naidenov
kdv писал(а):ээээээ..
1. таблица не имеет ПК
2. добавляем столбец
3. ЗАПОЛНЯЕМ ЗНАЧЕНИЯМИ. потому что добавление столбца НЕ МЕНЯЕТ данные существующих записей
4. создаем constraint PK_TABLE primary key (столбец).
все.
Так и поступил. Только вот меня поразили 2 факта, из-за которых, собственно и решил написать:
1. Почему можно добавить столбец с ограничением первичнго ключа к таблице с существующими данными, который автоматом заполняется NULLами!!!
2. Почему после такого добавления, нельзя закомитить добавленные руками вмето NULL корректные значения!?
Добавлено: 25 окт 2005, 17:21
kdv
1. Почему можно добавить столбец с ограничением первичнго ключа к таблице с существующими данными, который автоматом заполняется NULLами!!!
обычно так никто не делает. может, тут какой то баг, но как правило сначала добавляют столбец, а потом добавляют constraint pk_tablename primary key.
"Автоматом" null-ами ничего НЕ ЗАПОЛНЯЕТСЯ. Null это и есть НЕЗАПОЛНЕННОЕ значение столбца. Столбца этого в записях не было? Ну так он ниоткуда и не появился, значит null.
2. Почему после такого добавления, нельзя закомитить добавленные руками вмето NULL корректные значения!?
очевидно, потому же. см. выше.
я проверю, однако твой способ добавления столбца с ПК - это изврат в любом случае.
Добавлено: 25 окт 2005, 17:32
Merlin
Дим, IB4 сливал с таким PK и с таким Unique и с таким уникальным индексом. Насчёт FK - не помню, но вроде дебаты насчёт нуллов в FK шли во время разработки FB1 так что скорее всего тоже. Когда это всё разрешили, в 1 или 1.5 - склероз. Ну и PK скорей всего попал под горячую руку.
Добавлено: 26 окт 2005, 16:51
dimitr
вроде явная бага, будем править
Добавлено: 28 окт 2005, 12:04
dimitr
Исправлено в 2.0.
Добавлено: 09 ноя 2005, 11:19
null
Продажа земли на горнолыжных курортах Черногории:
http://cernis.cz