hi all
Есть ощущение, что уже натыкался на это. Но найти не могу (ни тут, ни в трекере по своим тикетам).
Чтение обличительной
речи DS про FK в разных базах и то, как это плохо, навеяло на следующий простой эксперимент (в ОДНОМ окне):
SQL> recreate table t2(f01 int); commit; -- drop dependency on table `t1`
SQL> recreate table t1(f01 int, f02 int, unique(f01,f02)); commit;
SQL> recreate table t2(f01 int, f02 int, foreign key(f01,f02) references t1(f01,f02) ); commit;
SQL> insert into t2 values(1,1);
Statement failed, SQLSTATE = 23000
violation of FOREIGN KEY constraint "INTEG_12" on table "T2"
-Foreign key reference target does not exist
SQL> -- Пока всё очень хорошо.
SQL> rollback;
SQL> insert into t2 values(1,null); -- ?!
SQL> insert into t2 values(null,1); -- ??!!
SQL> commit;
В итоге, в таблице t2 есть строки, с частично заданными столбцами, которым нет соотв-вия в t1.
Этот результат - правильный или нет ? я не про вариант, когда все столбцы из unique-набора содержат null'ы,
а именно про данный вариант: часть столбцов - задана, часть - нет.
PS.
SQL> show version;
ISQL Version: WI-V2.5.2.26501 Firebird 2.5
Server version:
Firebird/x86/Windows NT (access method), version "WI-V2.5.2.26501 Firebird 2.5"
Firebird/x86/Windows NT (remote server), version "WI-V2.5.2.26501 Firebird 2.5/XNet (BALAHA)/P12"
Firebird/x86/Windows NT (remote interface), version "WI-V2.5.2.26501 Firebird 2.5/XNet (BALAHA)/P12"
on disk structure version 11.2