Ребята, столкнулся с непонятной для меня проблемой.
Смотрите, таблица создается так:
CREATE TABLE tbl_transaction (
id INTEGER PRIMARY KEY AUTOINCREMENT
UNIQUE
NOT NULL,
name STRING NOT NULL,
description STRING,
datetime DATETIME NOT NULL,
amount DECIMAL DEFAULT (0),
id_cash_account INTEGER REFERENCES tbl_cash_accounts (id) ON DELETE SET DEFAULT
ON UPDATE CASCADE
NOT NULL
DEFAULT (1),
id_category INTEGER REFERENCES tbl_category (id) ON DELETE SET DEFAULT
ON UPDATE CASCADE
NOT NULL
DEFAULT (1)
);
То есть, при удалении строки и таблицы id_cash_account - в таблице tbl_transaction в столбце «id_cash_account» появится значение 1 вместо того, что было. Например, допустим таблица tbl_transaction содержит строку:
id = '1'
name = 'test'
description = ''
datetime = '21.07.12 03:08:12'
amount = '3'
id_cash_account = '33'
id_category = '66'
Тогда, если в таблице tbl_cash_accounts мы удаляем строку с id = 33
DELETE FROM tbl_cash_accounts
WHERE id = '33';
то запись в таблице tbl_transaction должна превратиться в:
id = '1'
name = 'test'
description = ''
datetime = '21.07.12 03:08:12'
amount = '3'
id_cash_account = '1'
id_category = '66'
Так и происходит, если я в СУБД напишу такой запрос, но если я напишу такой запрос и выполню его в Qt - query->exec(textQuery);, то запись в таблице tbl_cash_accounts конечно удалится, а вот значение в tbl_transaction останется прежним - 33.
И проблема не только в этом, к примеру, запросы из Qt так же игнорируют NOT NULL столбцы (то есть из самой субд я пустое значение вставить не могу в таблицу, а если этот же запрос выполнить через QSqlQuery, то оно выполнит вставку без ошибок и отобразит значение в субд)
Я первый раз с таким столкнулся. В чем проблема может быть, господа?
То есть, опять же, как вы видите, в таблице tbl_transaction целых пять столбцов NOT NULL
И если средствами Qt (query->exec) выполнить этот запрос:
INSERT INTO tbl_transaction (id, name, description, datetime, amount, id_cash_account, id_category) VALUES ('0','','','','0','0','0');
ОНО ЕГО ВЫПОЛНИТ! И в СУБД отобразит строку:
id = '0'
name = ''
description = ''
datetime = ''
amount = '0'
id_cash_account = '0'
id_category = '0'
Это уже не говоря о том, как оно на место связей умудрилось нули впихнуть! Мне это просто выносит мозг