当前位置: 代码迷 >> Sql Server >> 一个表的两个外键都指向自个儿
  详细解决方案

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

热度:60   发布时间:2016-04-27 11:46:09.0
一个表的两个外键都指向自己
我看到一段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

------解决方案--------------------
可能是创建表的人当时有点蛋疼。
------解决方案--------------------
两句不都是一样的吗?难道是生成脚本的时候出问题了?
------解决方案--------------------
是应该是搞错了吧
估计是iUserUniqueId-->iUniqueId


iUniqueId--必髯要有唯一性,才能被被引用(唯一索引、约束、主健)
------解决方案--------------------
同意5楼的看法,典型的搞错了,不可能主键自引用的。
------解决方案--------------------
是应该是搞错了吧
估计是iUserUniqueId-->iUniqueId


估计是想 用 iUniqueId,iUserUniqueId 这两个字段来做联合主键。
  相关解决方案