Автоинкрементные поля в СУБД

Ошибки при работе с ГИС Аксиома
Ответить
Аватара пользователя
Alex_Y
Сообщения: 24
Зарегистрирован: 26 янв 2021, 06:40

Автоинкрементные поля в СУБД

Сообщение Alex_Y » 04 фев 2023, 10:56

Доброго времени суток.

Аксиома не определяет автоинкрементные поля и пытается в них писать как в обычные. Проблема в том, что в аксиоме такие поля не заполняются и в новых строках они равны 0. Если такое поле являются ключом, то когда пытаемся сохранить таблицу, этот 0 пытается записать в БД. В результате резонно получаем ошибку "Ошибка SQL: (SQLITE):UNIQUE constraint failed".

Как то это можно побороть?
Аватара пользователя
Александр
Сообщения: 230
Зарегистрирован: 18 апр 2019, 08:21

Re: Автоинкрементные поля в СУБД

Сообщение Александр » 05 фев 2023, 09:37

Да, есть такая проблема.
Тут: viewtopic.php?f=3&t=2880#p5099
нам уже о ней сообщали.
Исправление будет в ближайшем обновлении
Аватара пользователя
Alex_Y
Сообщения: 24
Зарегистрирован: 26 янв 2021, 06:40

Re: Автоинкрементные поля в СУБД

Сообщение Alex_Y » 20 фев 2023, 01:52

Здравствуйте.

При внесении двух и более объектов при сохранении выдает ошибку:

Ошибка SQL: (SQLITE):UNIQUE constraint failed: Obj_Bindings.ID (path: 'D:\test\test.db')
Аватара пользователя
Александр
Сообщения: 230
Зарегистрирован: 18 апр 2019, 08:21

Re: Автоинкрементные поля в СУБД

Сообщение Александр » 02 мар 2023, 13:45

Удалось повторить проблему.
Она возникает при вставке в таблицу открытую в режиме локальной копии.
Аватара пользователя
Alex_Y
Сообщения: 24
Зарегистрирован: 26 янв 2021, 06:40

Re: Автоинкрементные поля в СУБД

Сообщение Alex_Y » 06 мар 2023, 16:40

Александр писал(а): 02 мар 2023, 13:45 Удалось повторить проблему.
Она возникает при вставке в таблицу открытую в режиме локальной копии.
Вроде режим не имеет значения.

Ошибка возникает при вставке нескольких строк с последующем сохранением таблицы. При этом у автоинкрементного поля стоит значение 0. Я так понимаю этот 0 и пишется в автоинкремент. А так как это ключ, то выводит ошибку о повторении значений, т.к. нулей получается несколько.

Правильным бы было для таких полей, если значение 0, то ничего не писать, дать триггеру БД сделать это самому. Если же значение отличное от 0, тогда писать его и далее уже на усмотрение пользователя, раз он указал какое-то значение.

Мапинфо так вообще проще поступает, делает автоинкрементные поля только для чтения и сама туда ничего не пишет. За их заполнение отвечает сервер БД.

А еще в Мапинфо есть возможность открывать не все поля таблицы, а выборочные. В Аксиоме есть такая возможность? Возможно можно решить проюблему с инкрементными полями исключив их из списка полей в запросе?
Аватара пользователя
Александр
Сообщения: 230
Зарегистрирован: 18 апр 2019, 08:21

Re: Автоинкрементные поля в СУБД

Сообщение Александр » 07 мар 2023, 17:58

Мы исправили - сейчас тестируем.
Когда протестируем напишу сюда.

Нули всё равно останутся. Планируем сделать нормальную поддержку NULL, тогда будет без нулей.
Назначать поля readonly в схеме таблицы тоже в планах.
А еще в Мапинфо есть возможность открывать не все поля таблицы, а выборочные. В Аксиоме есть такая возможность?
Есть для SQL Server, Oracle, PostrgeSql - для SQLite добавим.
Аватара пользователя
Александр
Сообщения: 230
Зарегистрирован: 18 апр 2019, 08:21

Re: Автоинкрементные поля в СУБД

Сообщение Александр » 09 мар 2023, 13:31

Протестировали, работает - будет в ближайшем обновлении.
Пожалуйста, напишите нам на почту если Вам нужна исправленная версия.
Аватара пользователя
Alex_Y
Сообщения: 24
Зарегистрирован: 26 янв 2021, 06:40

Re: Автоинкрементные поля в СУБД

Сообщение Alex_Y » 15 мар 2023, 02:32

Александр писал(а): 09 мар 2023, 13:31 Протестировали, работает - будет в ближайшем обновлении.
Пожалуйста, напишите нам на почту если Вам нужна исправленная версия.
Работает. Спасибо.
Ответить