SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » FB 4.0 DML в execute statement и автономные транзакции (Странные баги.)
FB 4.0 DML в execute statement и автономные транзакции [сообщение #2556] Wed, 14 June 2023 16:21 Переход к предыдущему сообщению
protector в настоящее время не в онлайне  protector
Сообщений: 7
Зарегистрирован: May 2023
Junior Member

Обнаружил, что в четверке поломалась работа с DML в execute statement в автономных транзакциях. В 2.5 и 3.0 всё работает.
Вот простейший пример.

CREATE TABLE NEW_TABLE (
    F1  INTEGER,
    F2  INTEGER
);

SET TERM ^ ;

CREATE OR ALTER TRIGGER NEW_TABLE_AIUD0 FOR NEW_TABLE
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
as
begin

end
^

execute block
returns(ID int)
as
begin
  in autonomous transaction do
    execute statement 'drop trigger NEW_TABLE_AIUD0';

  suspend; --different errors

  execute statement 'alter table NEW_TABLE alter F2 position 1';
end
^
в результате получаем ошибку, причём разную с suspend и без него.

/* without suspend;

Undefined name.
unsuccessful metadata update.
ALTER TABLE NEW_TABLE failed.
SQL error code = -204.
Table unknown.
NEW_TABLE.
<Missing arg #1 - possibly status vector overflow>.
---------------------------------------------------
SQLCODE: -204
SQLSTATE: 42S02
GDSCODE: 335544351*/


/* with suspend;

This operation is not defined for system tables.
unsuccessful metadata update.
ALTER TABLE NEW_TABLE failed.
deadlock.
update conflicts with concurrent update.
concurrent transaction number is 215649.
At block line: 10, col: 3.*/
Ошибка происходит на строке с алтером. Причём, походу, дело касается только тригеров, и в алтере должен быть "alter position", иначе всё работает!
 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: RN FB4.0.2. Ключевое слово ROUND
Следующая тема: SET DECFLOAT ROUND
Переход к форуму:
  


Текущее время: Sun Dec 22 16:33:24 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00820 секунд