【发布时间】:2011-04-01 21:25:07
【问题描述】:
使用 [Fk_Test2]
走
/****** 对象:表 [dbo].[Owners] 脚本日期:08/20/2010 16:52:44 ******/
设置 ANSI_NULLS ON
走
设置 QUOTED_IDENTIFIER ON
走
设置 ANSI_PADDING ON
走
创建表 [dbo].[所有者](
[所有者] [varchar](10) 非空,
约束 [PK_Owners] 主键集群
(
[所有者] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) 开 [主要]
走
设置 ANSI_PADDING 关闭
走
/****** 对象:表 [dbo].[Key] 脚本日期:08/20/2010 16:49:57 ******/
设置 ANSI_NULLS ON
走
设置 QUOTED_IDENTIFIER ON
走
设置 ANSI_PADDING ON
走
创建表 [dbo].[Key](
[所有者] [varchar](10) 非空,
[key_id] [varchar](10) 非空,
[描述] [varchar](10) NOT NULL,
约束 [PK_Key] 主键集群
(
[所有者] ASC,
[key_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) 开 [主要]
走
设置 ANSI_PADDING 关闭
走
ALTER TABLE [dbo].[Key] WITH CHECK ADD CONSTRAINT [FK_Key_Owners] FOREIGN KEY([owner])
参考 [dbo].[所有者] ([所有者])
走
ALTER TABLE [dbo].[Key] 检查约束 [FK_Key_Owners]
走
/****** 对象:表 [dbo].[Bldg] 脚本日期:08/20/2010 16:50:29 ******/
设置 ANSI_NULLS ON
走
设置 QUOTED_IDENTIFIER ON
走
设置 ANSI_PADDING ON
走
创建表 [dbo].[Bldg](
[大厦] [varchar](10) 非空,
[所有者] [varchar](10) 非空,
约束 [PK_Bldg] 主键集群
(
[大厦] ASC,
[所有者] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) 开 [主要]
走
设置 ANSI_PADDING 关闭
走
ALTER TABLE [dbo].[Bldg] WITH CHECK ADD CONSTRAINT [FK_Bldg_Owners] FOREIGN KEY([owner])
参考 [dbo].[所有者] ([所有者])
走
ALTER TABLE [dbo].[Bldg] 检查约束 [FK_Bldg_Owners]
走
/****** 对象:表 [dbo].[KeyToBuilding] 脚本日期:08/20/2010 17:13:52 ******/
设置 ANSI_NULLS ON
走
设置 QUOTED_IDENTIFIER ON
走
设置 ANSI_PADDING ON
走
创建表 [dbo].[KeyToBuilding](
[所有者] [varchar](10) 非空,
[大厦] [varchar](10) 非空,
[key_id] [varchar](10) 非空,
约束 [PK_KeyToBuilding] 主键集群
(
[所有者] ASC,
[大厦] ASC,
[key_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) 开 [主要]
走
设置 ANSI_PADDING 关闭
走
ALTER TABLE [dbo].[KeyToBuilding] WITH CHECK ADD CONSTRAINT [FK_KeyToBuilding_Key] FOREIGN KEY([owner], [key_id])
参考 [dbo].[Key] ([owner], [key_id])
走
ALTER TABLE [dbo].[KeyToBuilding] 检查约束 [FK_KeyToBuilding_Key]
走
ALTER TABLE [dbo].[KeyToBuilding] WITH CHECK ADD CONSTRAINT [FK_KeyToBuilding_Bldg] FOREIGN KEY([owner], [bldg])
参考文献 [dbo].[Bldg] ([owner], [bldg])
走
ALTER TABLE [dbo].[KeyToBuilding] 检查约束 [FK_KeyToBuilding_Bldg]
走
每当我尝试进行设置时,我都会收到错误消息 “表“Key”或“Bldg”中的列与现有的主键或 UNIQUE 约束不匹配。
我是否试图以错误的方式实现这种关系?还是做一些蠢事?
该系统用于跟踪人们进入不同建筑物的钥匙(物理)。这就是为什么有 key_id 和 Key 它们不是数据库键的原因。
【问题讨论】:
-
如果您发布用于创建这些表的实际 DDL 会更容易。
-
考虑包含一个与 Bldg 和 Key 有关系的 Owner 表
-
我把我的表格模型改成了一个实际的脚本另外我得到的错误是在 FK_KeyToBuilding_Bldg 它说 Msg 1776, Level 16, State 0, Line 2 没有主要或候选被引用表“dbo.Bldg”中与外键“FK_KeyToBuilding_Bldg”中的引用列列表匹配的键。
标签: sql-server-2008 database-design