Проблема здесь:
select *
from (select d.column_name,
k.*, --> this
d.* --> this
from user_constraints k,
user_cons_columns d
where k.constraint_name = D.CONSTRAINT_NAME
and D.COLUMN_NAME = 'REGION_ID'
and D.TABLE_NAME = 'COUNTRIES'
and k.constraint_type='R'
) t,
user_constraints v
where t.R_constraint_name = v.constraint_name;
Поскольку обе таблицы содержат столбцы с одинаковыми именами столбцов (в данном случае это столбец constraint_name
), Oracle не может определить, какие из них вы ' перевыбор. Вы должны выбрать интересующие вас столбцы и - если они имеют одно и то же имя - использовать aliases .
Например:
SQL> select *
2 from (select d.column_name,
3 k.r_constraint_name,
4 k.table_name,
5 d.constraint_name d_constraint_name, --> this
6 k.constraint_name k_constraint_name --> this
7 from user_constraints k,
8 user_cons_columns d
9 where k.constraint_name = D.CONSTRAINT_NAME
10 and D.COLUMN_NAME = 'DEPTNO'
11 and D.TABLE_NAME = 'DEPT'
12 and k.constraint_type='R'
13 ) t,
14 user_constraints v
15 where t.R_constraint_name = v.constraint_name;
no rows selected
SQL>