У меня есть одна таблица STATUSES, содержащая статусы для нескольких таблиц:
TABLE_NAME | STATUS_ID | STATUS_NAME
===========+===========+============
TAB_1 | 1 | New
TAB_1 | 2 | Started
TAB_1 | 3 | Complete
TAB_2 | 1 | Empty
TAB_2 | 2 | Full
Таблица STATUSES имеет первичный ключ из двух столбцов (table_name, status_id).
Тогда у меня есть таблица TAB_1:
ID | STATUS_ID | TAB_VALUE
===+===========+==========
1 | 1 | Value1
Когда я хочу получить значения таблицы со статусом, я использую следующий запрос SQL:
SELECT id,tab_value,status_name
FROM tab_1 t
JOIN statuses s ON (s.status_id=t.status_id AND s.table_name='TAB_1')
Теперь я хотел бы создать внешний ключ от TAB_1 до STATUSES, но STATUS_ID долженотличаться от имени таблицы!
Я попробовал вот что:
ALTER TABLE tab_1
ADD CONSTRAINT tab_1_status_fk FOREIGN KEY ('TAB_1',status_id)
REFERENCES statuses (table_name,status_id)
ENABLE;
Конечно, это не работает (иначе меня бы здесь не было).
Можно ли создать такой внешний ключ с помощью «различителя»?