powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопросы по апдейту
13 сообщений из 13, страница 1 из 1
Вопросы по апдейту
    #39430752
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 2.5.6.
Скрипт:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE TABLE1 (
    ID   INTEGER NOT NULL
);

ALTER TABLE TABLE1 ADD CONSTRAINT PK_TABLE1 PRIMARY KEY (ID);

INSERT INTO TABLE1 (ID) VALUES (1);

ALTER TABLE TABLE1
ADD ID2 INTEGER
NOT NULL;

UPDATE TABLE1 SET ID2 = NULL;



Сервер выдает следующее исключение:
Код: plaintext
1.
The insert failed because a column definition includes validation constraints.
validation error for column "TABLE1"."ID2", value "*** null ***".

Вопросы разработчикам:
1. То, что сервер пишет "Insert falied" вместо "Update failed" - это норма?
2. Можно ли сделать, чтобы при исключении при апдейте сообщалось значение PK строки, на которой оно произошло? Как у нарушения уникальности:
Код: plaintext
1.
2.
Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint "PK_TABLE1" on table "TABLE1".
Problematic key value is ("ID" = 1).

Например:
Код: plaintext
1.
2.
The update failed because a column definition includes validation constraints.
validation error for column "TABLE1"."ID2", value "*** null ***".
Key value of record is ("ID" = 1).
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39430756
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxчтобы при исключении при апдейте сообщалось значение PK строки, на которой оно произошло?
в данном случае - какая разница, на какой? На первой,любой. ID2 not null, а ты в него null пишешь. При чем тут вообще ПК, которого может не быть?
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39430764
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Здесь показан пример.
Ошибка при апдейте может произойти по многим случаям. Например, в триггере срабатывает проверка или в домене. Знание ID записи упростит работу администратору БД и разработчику. Так же это позволит просматривать записанные логи исключений, так как сейчас, если был отлуп сервера на обновление, непонятно, какую строку пытались обновить и толку от этой информации около ноля.
ПК может и не быть, конечно. В этом случае не показывать ничего или писать, что "PK not exist".
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39430774
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

фигня это. Ключ может быть составным. Там может бить бинарный guid и другие заморочки
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39430783
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Так и в случае нарушения уникальности этот ключ корректно выводится:
Код: plaintext
1.
2.
3.
Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint "UNQ_INF$ABONENT$BT" on table "INF$ABONENT$BT".
Problematic key value is ("ID_ABONENT" = 555555, "ID_SERVICE" = 1, "ID_PERIOD" = 200912).

По поводу GUID и строк - сейчас содержимое строк, например, тоже отображается:
Код: plaintext
1.
2.
Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint "UNQ1_DIR$ABONENT$REASON_APPEAL" on table "DIR$ABONENT$REASON_APPEAL".
Problematic key value is ("NAME" = 'Квитанция').
Так что не думаю, что что могут быть проблемы с GUID.
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39449456
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

ALTER TABLE TABLE1
ADD ID2 INTEGER
NOT NULL ;

UPDATE TABLE1 SET ID2 = NULL ;

Тебя здесь ничего не смущает?
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39449500
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

А может сообщение для
Код: sql
1.
2.
3.
ALTER TABLE TABLE1
ADD ID2 INTEGER
NOT NULL;


?

Это было бы логично.
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39449678
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_nТебя здесь ничего не смущает?
Ничего. Потому что пост не про это.
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39449679
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXICyberMax,

А может сообщение для
Код: sql
1.
2.
3.
ALTER TABLE TABLE1
ADD ID2 INTEGER
NOT NULL;


?

Это было бы логично.
Нет, сообщение про последний запрос.
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39449712
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

технически update - это вставка новой версии. Так что если менять, то точно так же, как в других сообщениях
"Invalid insert or update..."
т.е.
"The insert or update failed because..."
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39449775
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно написать что-то типа Writing operation is failed because of incorrect f...ing constraints.
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39449776
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по моему кому-то делать не чего. Оставьте как есть
...
Рейтинг: 0 / 0
Вопросы по апдейту
    #39449825
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениса по моему кому-то делать не чего. Оставьте как есть

представь, ты делаешь какую-нить хранимку с богатой логикой.
И у одно клиента в ней ошибка с руганью на Insert
Вот только у тебя там никакого Insert-то и нет, только Update!

Смешно, правда?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопросы по апдейту
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]