【发布时间】:2013-05-03 03:18:35
【问题描述】:
我在以下设置中有 3 个表
CREATE TABLE [dbo].[codevariable] (
[id] [int] NULL,
[code] [nchar](10) NULL,
[variable] [int] NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[proxy] (
[id] [int] NULL,
[description] [nvarchar](50) NULL,
[status] [bit] NULL,
[added] [datetime] NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[wall] (
[id] [int] NULL,
[description] [nvarchar](50) NULL
) ON [PRIMARY]
表格中的以下值 桌墙
1 This is a basic wall
2 This is a medium wall
3 This is an advanced wall
表代理
1 Small Proxy True 2013-05-08 00:00:00.000
2 Medium Proxy False 2013-05-08 00:00:00.000
表代码变量
1 Proxy 1
2 Proxy 2
3 Wall 1
4 Wall 2
5 Wall 3
Owke 现在我面临的问题是,如果我想插入让我们说代理中的新行。那么它将有Id 3,现在我需要确保在代码Proxy下的CodeVariable中也存在id 3!
没有外键就无法检查代码是否存在于代码变量中。
我尝试过使用外键但没有成功。如何在列代码上的 CodeVariable 表和表代理和表墙的变量之间创建链接。
我还可以在唯一的代码和变量上创建索引。但你不能将外键链接到它。
我正在使用 SQL 2008
谢谢
【问题讨论】:
-
是的,您可以将 FK 链接到复合唯一性。但是您必须链接到整个密钥。并且类型必须相同。为什么沃尔甚至在问题中?
-
这是否意味着我必须添加代理和墙表附加列?这意味着啸叫列将具有相同的值。
标签: sql-server-2008 tsql indexing foreign-key-relationship create-table