2014-10-08 35 views
0

我有一个代码列表表,其中包含组名和键ID。而不是每个查找(键/描述对)使用谨慎的表,他们都在一个code_list表。我想使用文字和列名作为关系密钥来生成FK。SQL Server - 创建FK使用文字作为其中一个键

例子:

Order table -> "State" & order.state_id -> code_list.group_name & code_list.key_id. 

下面的语句,显然是行不通的,但是是什么,我试图完成一个例子。

ALTER TABLE [dbo].[Order] WITH CHECK 
    ADD CONSTRAINT [FK_State_Code_List] 
    FOREIGN KEY('State', [State_Id]) 
    REFERENCES [dbo].[Code_List] ([Group_Name], [Key_Id]) 

我使用SQL Server 2014

回答

0

不能使用文字值。

您可以添加一个保留的计算列,并在FK定义中引用所需的值并引用某些超级类型/子类型模型as this questioner demonstrates

但是你似乎在这里实施“one true lookup table”反模式。

你应该为State和一个常规的外键创建一个单独的表。

相关问题