我最终创建了一个表employee
,其中包含一列empid
,它是一个计算列,此列也是主键。
这是一个自引用表,列managerid
引用回自身。
但是现在当我在添加更多列后保存表格时,我收到错误
'注册'表
无法创建索引'PK_Registration' 无法在表'注册'中的可空列上定义PRIMARY KEY约束 无法创建约束。查看以前的错误。
但是我的桌子工作得很好......
我希望以图形方式在表格中工作而不是每次进行更改时编码
我不能在图形上做到这个错误的原因有100个表我不喜欢这样编码它很刺激
我想在SQL Server 2008中以图形方式实现管理工作室是否可能?
这是我的表
CREATE TABLE [dbo].[Registration](
[empid] AS ('Sale_'+CONVERT([varchar](50),[id],(0))) PERSISTED NOT NULL,
[id] [int] IDENTITY(900000,1) NOT NULL,
[First_Name] [varchar](40) NULL,
[Last_Name] [varchar](40) NULL,
[Address] [varchar](40) NULL,
[E_Mail] [varchar](40) NULL,
[Country] [varchar](40) NULL,
[Mobile_No] [varchar](40) NULL,
[Designation] [varchar](40) NULL,
[managerID] [varchar](55) NULL,
CONSTRAINT [PK_Registration] PRIMARY KEY CLUSTERED
(
[empid] 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
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Registration] WITH CHECK ADD CONSTRAINT [FK_Registration_Registration] FOREIGN KEY([managerID])
REFERENCES [dbo].[Registration] ([empid])
GO
ALTER TABLE [dbo].[Registration] CHECK CONSTRAINT [FK_Registration_Registration]
GO
答案 0 :(得分:1)
你不能使用empid作为主键 使用id作为主键 使用“[int] IDENTITY”作为表的主键是最常用的主键操作方式。 主键和聚簇索引将控制存储 使用empid作为主键,我看不出任何好处 只需将empid设为计算列即可。对于查询,SQL服务器将看到它是计算列,它只使用主键。然后,SQL服务器将仅在其查询中使用主键。