Официальный форум СВД Встраиваемые Системы
03 Декабря, 2016, 07:40:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: проблемы с внешними ключами и триггерами в СУБД QDB  (Прочитано 3444 раз)
z_lex
Интересующийся

Сообщений: 5


« : 05 Августа, 2014, 15:57:20 »

Здравствуйте!
Вопрос по СУБД qdb, поставляемой вместе с ОС (QNX 6.5.0). Столкнулся с двумя проблемами:

1) Внешние ключи успешно создаются, но не работают. Ниже приведен вывод утилиты qdbc:

Код:
SQL> create table t2(b integer primary key);
Empty result set
SQL> create table t3(a integer primary key, b integer, foreign key (b) references t2(b) );
Empty result set
SQL> insert into t3(a, b) values (3, 1);
Empty result set                     <- а должно было бы появиться сообщение типа constraint failure
SQL> select * from t3;
Rows: 1  Cols: 2
Names:  +a+b+
00000:  |3|1| <- тем не менее запись успешно внесена в таблицу
SQL> select * from t2;
Empty result set

Созданный внешний ключ отображается в списке внешних ключей для данной таблицы:
Код:
SQL> pragma foreign_key_list(t3);
Rows: 1  Cols: 8
Names:  +id+seq+table+from+to+on_update+on_delete+match+
00000:  |0|0|t2|b|b|RESTRICT|RESTRICT|NONE|

2) Невозможно создать триггер. Вывод утилиты qdbc:

Код:
SQL> create table t1(a integer);
Empty result set
SQL> create trigger a1 before insert on t1
   > begin
   > update t1 set a=10;
near ";": syntax error (S1)
SQL> end;
cannot commit - no transaction is active (S1)

если после запроса не ставить точку с запятой:

Код:
SQL> create trigger a1 before insert on t1
   > begin
   > select * from t1
   > end;
near ";": syntax error (S1)

Неважно, какой запрос подставлять между begin и end - результат один. Вне триггера запрос работает нормально.

Вот тут человек столкнулся с такой же проблемой с триггерами в qdb: http://sqlite.1065341.n5.nabble.com/Create-trigger-td14987.html.

Существует ли какой-нибудь патч для устранения этих проблем и где его можно найти? На qnx.com ничего по этой проблеме не нашел.
Заранее спасибо за помощь.
« Последнее редактирование: 05 Августа, 2014, 16:02:02 от z_lex » Записан
Александр Пономарев
Интересующийся

Сообщений: 4



« Ответ #1 : 08 Августа, 2014, 10:50:37 »

Мы работаем над данным вопросом. Как только появятся результаты - мы сразу же ответим.

Записан

Александр Пономарев
Интересующийся

Сообщений: 4



« Ответ #2 : 12 Августа, 2014, 11:57:24 »

В QNX 6.5.0 используется версия sqlite3, которая не полностью поддерживает работу с внешними ключами и триггерами. Для работы с более новой версией sqlite3 требуется пересборка самой qdb. Как только появится рабочая версия - сразу сообщим.
Записан

Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #3 : 15 Августа, 2014, 11:06:02 »

z_lex, здравствуйте!

Для решения описанных проблем подготовили обновление компонентов qdb. Предлагаем Вам скачать и установить патч patch-650-qdb-x86-20140815.tar. В патч входит библиотека libsqlite версии 3.8.5, пересобранный менеджер qdb, исправленная версия клиента qdbc. Прошу Вас проверить работу обновлённых компонентов.
Записан

z_lex
Интересующийся

Сообщений: 5


« Ответ #4 : 22 Августа, 2014, 15:03:56 »

Спасибо за ответы!
Скопировал куда нужно вышеуказанные компоненты из патча (автоматически установить не удалось, applypatch'у не понравилась структура патча), триггеры заработали. Но с внешними ключами все та же проблема - создаются, но не работают.
Записан
Александр Пономарев
Интересующийся

Сообщений: 4



« Ответ #5 : 22 Августа, 2014, 15:42:24 »

По умолчанию работа с внешними ключами отключена.
Включить же поддержку внешних ключей можно командой:
Код:
PRAGMA FOREIGN_KEYS=ON;
Записан

z_lex
Интересующийся

Сообщений: 5


« Ответ #6 : 26 Августа, 2014, 16:12:12 »

Спасибо большое за помощь, теперь все работает! Smiley Не понял сразу, что нужно выполнять "PRAGMA foreign_keys = ON;" для каждого соединения с БД в отдельности.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 15 Ноября, 2016, 17:13:46