Не добавляется PrimaryKey (value "*** null ***".)

Cobalt747
Дата: 23.08.2012 15:22:11
Win7 x64
FB 2.1.5.18496 x86
IBExpert 2012.8.19.1 (x86?)

Сделал табличку
CREATE TABLE NEW_TABLE (
    FIELD  CHAR(10) CHARACTER SET UNICODE_FSS,);

Наполнил данными

Затем добавил еще одни столбец:
    ID     FINT NOT NULL /* FINT = INTEGER */

Заполнил его неповторяющимися значениями
Захотел сделать его "официально" PK

ALTER TABLE NEW_TABLE
ADD CONSTRAINT PK_NEW_TABLE
PRIMARY KEY (ID)
USING INDEX INEX222


Получаю болт:
автор
The insert failed because a column definition includes validation constraints.
validation error for column ID, value "*** null ***".


А если с поля ID снять NotNull то получу другой отлуп
автор
This operation is not defined for system tables.
unsuccessful metadata update.
Column: ID not defined as NOT NULL - cannot be used in PRIMARY KEY constraint definition.



Вопрос: ЧЯДНТ?
pastor
Дата: 23.08.2012 15:24:56
Cobalt747,

пользуешься слишком сложным инструментом.
сделай все в isql, предъяви сюда скрипт.
Dimitry Sibiryakov
Дата: 23.08.2012 15:25:39

Cobalt747
Заполнил его неповторяющимися значениями

Значит плохо заполнил.

Posted via ActualForum NNTP Server 1.5

o_v_a
Дата: 23.08.2012 15:28:28
Или не подтвердил изменения данных
Cobalt747
Дата: 23.08.2012 15:28:28
Dimitry Sibiryakov
Значит плохо заполнил.
Cobalt747
Дата: 23.08.2012 15:32:58
o_v_a
Или не подтвердил изменения данных

переподключение к базе считается?
kdv
Дата: 23.08.2012 15:36:20
считается вывод select * from NEW_TABLE в единственном открытом окне SQL Editor.
"Таблицы" открываются каждая в своей транзакции. В общем, учи матчасть.
Или, вариант
- ты добавил запись с id = null
- сделал rollback
- мусор не собран (по какой-то причине), pk создать не получится.
Cobalt747
Дата: 23.08.2012 15:55:07
kdv,

Мда...
Обнаружил, что в фоне в отладке висела Дельфи с подключением к этой базе.
Подключение висело на чтении метаданных той таблицы.
Закрыл Дельфи, ключ создался.
Таблоид
Дата: 23.08.2012 16:07:47
Cobalt747
Вопрос: ЧЯДНТ?
Как выше уже сказал pastor, такие вещи надо делать в isql - и проще, и быстрее:

SQL> commit;
SQL> delete from mon$attachments where mon$attachment_id <> current_connection;
SQL> commit;
SQL> alter table my_table add constraint my_table_pk primary key(id);
SQL> commit;
SQL> quit;