Closed firebird-automations closed 15 years ago
Commented by: @hvlad
All works as it must works :
SQL> set term ^; SQL> recreate table t1 (id int)^ SQL> create or alter procedure sp CON> as CON> declare variable conn varchar(255); CON> begin CON> select mon$attachment_name from mon$attachments CON> where mon$attachment_id = current_connection CON> into :conn; CON> CON> execute statement 'insert into t1 values(1)' CON> on external 'localhost:' || :conn CON> as user 'SYSDBA' password 'masterkey'; CON> end CON> ^ SQL> execute procedure sp^ SQL> commit^ SQL> select * from t1^
ID
============ 1
SQL> execute procedure sp^ SQL> rollback^ SQL> select * from t1^
ID
============ 1
Why do you think opposite ?
In russian : почему вы решили, что тр-ция не откатывается ? Всё работает, как и должно работать.
Commented by: @hvlad
Should i close this ticket as invalid ?
Submitted by: commanderz (commanderz)
create or alter procedure MYPROC as BEGIN EXECUTE STATEMENT 'INSERT INTO MYTABLE(FIELD1) VALUES(1)' ON EXTERNAL DATA SOURCE '192.168.0.1:c:\database.fdb' AS USER 'SYSDBA' PASSWORD 'masterkey'; END;
if I'm ROLLBACK this procedure - insert data in remote database '192.168.0.1:c:\database.fdb' will NO ROLLBACK; experementing with WITH { AUTONOMOUS | COMMON } TRANSACTION - not work too!
p.s. sorry for my bad english - I'm write in russian: При откате транзакции хотелось бы что бы происходил откат всех транзакций выполненных EXECUTE STATEMENT ON EXTERNAL DATA SOURCE.