一个表的两个外键都指向自己

xiehuanxie 2012-07-27 09:41:06
我看到一段SQL,很不理解一个表为什么要建两个都指向自己的外键。。。

CREATE TABLE [dbo].[tblSession](
[iUniqueId] [int] IDENTITY(1,1) NOT NULL,
[iUserUniqueId] [int] NOT NULL,
[nvcSessionId] [nvarchar](100) NOT NULL,
[dtSessionStartTime] [datetime] NOT NULL,
[dtSessionEndTime] [datetime] NULL,
[bSessionInProgress] [bit] NOT NULL,
CONSTRAINT [PK_tblSession] PRIMARY KEY CLUSTERED
(
[iUniqueId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[tblSession] WITH CHECK ADD CONSTRAINT [FK_tblSession_tblSession] FOREIGN KEY([iUniqueId])
REFERENCES [dbo].[tblSession] ([iUniqueId])
GO
ALTER TABLE [dbo].[tblSession] CHECK CONSTRAINT [FK_tblSession_tblSession]
GO
ALTER TABLE [dbo].[tblSession] WITH CHECK ADD CONSTRAINT [FK_tblSession_tblSession1] FOREIGN KEY([iUniqueId])
REFERENCES [dbo].[tblSession] ([iUniqueId])
GO
...全文
343 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Felixzhaowenzhong 2012-07-27
  • 打赏
  • 举报
回复
是应该是搞错了吧
估计是iUserUniqueId-->iUniqueId


估计是想 用 iUniqueId,iUserUniqueId 这两个字段来做联合主键。
zhazhuzhao 2012-07-27
  • 打赏
  • 举报
回复
同意5楼的看法,典型的搞错了,不可能主键自引用的。
NET_2011 2012-07-27
  • 打赏
  • 举报
回复
是应该是搞错了吧
估计是iUserUniqueId-->iUniqueId


iUniqueId--必髯要有唯一性,才能被被引用(唯一索引、约束、主健)
--小F-- 2012-07-27
  • 打赏
  • 举报
回复
两句不都是一样的吗?难道是生成脚本的时候出问题了?
快溜 2012-07-27
  • 打赏
  • 举报
回复
可能是创建表的人当时有点蛋疼。
xiehuanxie 2012-07-27
  • 打赏
  • 举报
回复
仔细看了下好像是从xsd自动生成的。。。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧