【发布时间】:2019-08-06 20:27:44
【问题描述】:
我有一个表 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;
当然,这不起作用(否则我不会在这里)。
是否可以用'distinguisher'创建这样的外键?
【问题讨论】: