Я использую Teradata 16.20.05.01 для запуска следующего скрипта:
create table t1(v int not null);
create table t2(w int null);
alter table t1 add constraint pk primary key (v);
alter table t2 add constraint t2_fk foreign key (w) references t1 (v);
После добавления внешнего ключа я неожиданно получаю одну лишнюю таблицу в своей схеме:
select TableName, RequestText
from "DBC".Tables
where DatabaseName = 'test'
and (TableName like 't1%' or TableName like 't2%')
Вывод:
TableName |RequestText |
----------|----------------------------------------------------------------------|
t1 |alter table t1 add constraint pk primary key (v) |
t2 |create table t2(w int null) |
T2_0 |alter table t2 add constraint t2_fk foreign key (w) references t1 (v) |
Это особенно раздражает при воссоздании этого внешнего ключа:
alter table t2 drop constraint t2_fk;
alter table t2 add constraint t2_fk foreign key (w) references t1 (v);
Что невозможно из-за:
Ошибка SQL [5303] [HY000]: [База данных Teradata] [TeraJDBC 15.00.00.33] [Ошибка 5303] [SQLState HY000] Таблица ошибок 'TEST.t2_0' уже существует.
Обходной путь:
Проблема не появляется при использовании встроенных определений ограничений
create table t1(v int not null, constraint pk primary key (v));
create table t2(w int null, constraint t2_fk foreign key (w) references t1 (v));
Это известная проблема?Есть ли надежный обходной путь?