удаляю представления |
---|
Для решения проблемы я хотел выполнить оба удаления в одной транзакции, но при этом при удалении второго представления ошибки не происходит, т.е. после коммита представления остаются не удаленными. |
Prepare:C:\MIX\firebird\fb25>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 'tmp120614.fdb'; commit;
SQL> create table t1(id int, f01 int); commit;
SQL> insert into t1 values(1,100);
SQL> insert into t1 values(3,300);
SQL> insert into t1 values(2,200);
SQL> commit;
SQL> create or alter view v1 as select f01/2 h, id*2 i from t1;
SQL> commit;
SQL> create or alter view v2 as select power(h,2) h2, power(i,2) i2 from v1;
SQL> commit;
SQL> create or alter view v3 as select sqrt(h2) hq, sqrt(i*3) iq from v2;
SQL> create or alter view v3 as select sqrt(h2) hq, sqrt(i2) iq from v2;
SQL> commit;
session #1C:\MIX\firebird\fb25>isql TMP120614.FDB
Database: TMP120614.FDB
SQL> select * from v1 union all select * from v2 union all select * from v3;
H I
======================= =======================
50.00000000000000 2.000000000000000
150.0000000000000 6.000000000000000
100.0000000000000 4.000000000000000
2500.000000000000 4.000000000000000
22500.00000000000 36.00000000000000
10000.00000000000 16.00000000000000
50.00000000000000 2.000000000000000
150.0000000000000 6.000000000000000
100.0000000000000 4.000000000000000
session 2:C:\MIX\firebird\fb25>isql TMP120614.FDB
Database: TMP120614.FDB
SQL> set bail on;
SQL> set autoddl off;
SQL> commit;
SQL> set transaction lock timeout 3;
SQL> drop view v3;
SQL> drop view v2;
SQL> drop view v1;
SQL> commit;
Statement failed, SQLSTATE = 40001
lock time-out on wait transaction
-unsuccessful metadata update
-object V3 is in use
SQL> rollback;
SQL> show view;
V1 V2
V3
Все вьюхи, как видим, остались на месте.