如何在ORACLE中定义这样的外键约束:
ALTER TABLE TEST_STORES ADD CONSTRAINT FK_STORE_TYPE
FOREIGN KEY ("StoreTable", STORE_TYPE) REFERENCES TEST_ENUMERATIONS (TABLE, VALUE)
/
我想在一个表中组合几个表的所有Enum值。 为了创建外键,我还需要检查枚举的类型,因为单独的值不是唯一的。
我需要这样,所以我可以在我的程序中将Store_Type定义为枚举(C#),但同时我想确保数据库值都是有效的。
例如:
TEST_STORE表:
| ID | ... | STORE_TYPE
|-----------|------------|------------
| 324234 | | 0
| 324235 | | 0
| 324236 | | 1
TEST_ENUMERATIONS表:
| ID | TABLE | VALUE | NAME
|-----------|--------------|------------|-------------
| 567234 | StoreTable | 0 | NormalStore
| 567235 | StoreTable | 1 | SpecialStore
| 567236 | AnotherTable | 0 | AnotherType
答案 0 :(得分:2)
尝试在TEST_STORES
上创建一个值为'StoreTable'
的虚拟列,并使用虚拟列作为外键中的第一列。
ALTER TABLE TEST_STORES ADD (ENUM_TABLE AS 'StoreTable');
ALTER TABLE TEST_STORES ADD CONSTRAINT FK_STORE_TYPE
FOREIGN KEY (ENUM_TABLE, STORE_TYPE) REFERENCES TEST_ENUMERATIONS (TABLE, VALUE)
答案 1 :(得分:0)
似乎你需要:
ALTER TABLE TEST_STORES ADD CONSTRAINT FK_STORE_TYPE
FOREIGN KEY (NAME, STORE_TYPE) REFERENCES TEST_ENUMERATIONS (TABLE, VALUE)
/
您还需要test_enumerations(table,value)上的唯一键。