Добавление столбца с ограничением первичного ключа
Добавление столбца с ограничением первичного ключа
Доброго времени суток, господа корифеи.
Столкнулся с такой проблемой: при добавлении к таблице с уже существующими данными нового столбца с ограничением первичного ключа, нельзя изменить значения для существовавших записей для этого столбца. Т.е. столбец добавляется корректно и не сообщается о каких-либо ошибках, но для всех существовавших в момент добавления записей, значения этого столбца проставляются в Null, после чего "руками" не изменяются (т.е. "отказываются подтверждаться").
Вопрос: почему значения нельзя изменить руками? Как заполнить это поле, не удалив предварительно ограничение первичного ключа?
Столкнулся с такой проблемой: при добавлении к таблице с уже существующими данными нового столбца с ограничением первичного ключа, нельзя изменить значения для существовавших записей для этого столбца. Т.е. столбец добавляется корректно и не сообщается о каких-либо ошибках, но для всех существовавших в момент добавления записей, значения этого столбца проставляются в Null, после чего "руками" не изменяются (т.е. "отказываются подтверждаться").
Вопрос: почему значения нельзя изменить руками? Как заполнить это поле, не удалив предварительно ограничение первичного ключа?
Re: Добавление столбца с ограничением первичного ключа
Как-то это странно. Мне казалось, что в столбце с ограничением первичного ключа вообще не может быть Null значений. Вопрос сформулирован правильно?Naidenov писал(а):Доброго времени суток, господа корифеи.
Столкнулся с такой проблемой: при добавлении к таблице с уже существующими данными нового столбца с ограничением первичного ключа, нельзя изменить значения для существовавших записей для этого столбца. Т.е. столбец добавляется корректно и не сообщается о каких-либо ошибках, но для всех существовавших в момент добавления записей, значения этого столбца проставляются в Null, после чего "руками" не изменяются (т.е. "отказываются подтверждаться").
Вопрос: почему значения нельзя изменить руками? Как заполнить это поле, не удалив предварительно ограничение первичного ключа?
Так и поступил. Только вот меня поразили 2 факта, из-за которых, собственно и решил написать:kdv писал(а):ээээээ..
1. таблица не имеет ПК
2. добавляем столбец
3. ЗАПОЛНЯЕМ ЗНАЧЕНИЯМИ. потому что добавление столбца НЕ МЕНЯЕТ данные существующих записей
4. создаем constraint PK_TABLE primary key (столбец).
все.
1. Почему можно добавить столбец с ограничением первичнго ключа к таблице с существующими данными, который автоматом заполняется NULLами!!!
2. Почему после такого добавления, нельзя закомитить добавленные руками вмето NULL корректные значения!?
обычно так никто не делает. может, тут какой то баг, но как правило сначала добавляют столбец, а потом добавляют constraint pk_tablename primary key.1. Почему можно добавить столбец с ограничением первичнго ключа к таблице с существующими данными, который автоматом заполняется NULLами!!!
"Автоматом" null-ами ничего НЕ ЗАПОЛНЯЕТСЯ. Null это и есть НЕЗАПОЛНЕННОЕ значение столбца. Столбца этого в записях не было? Ну так он ниоткуда и не появился, значит null.
очевидно, потому же. см. выше.2. Почему после такого добавления, нельзя закомитить добавленные руками вмето NULL корректные значения!?
я проверю, однако твой способ добавления столбца с ПК - это изврат в любом случае.