Здравствуйте!
Вопрос по СУБД 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 ничего по этой проблеме не нашел.
Заранее спасибо за помощь.