【发布时间】:2013-03-21 11:34:39
【问题描述】:
我终于创建了一个表employee,其中包含一个列empid,它是一个计算列,该列也是主键。
这是一个自引用表,managerid 列引用回自身。
但是现在当我在添加更多列后保存表格时,出现错误
“注册”表
无法创建索引“PK_Registration”。
无法对表“注册”中的可为空列定义 PRIMARY KEY 约束。
无法创建约束。查看以前的错误。
但我的桌子工作得很好......
我想在表格中以图形方式工作,而不是每次进行更改时都编码
我不能以图形方式执行此错误的原因有 100 个表我不喜欢这样做编码它非常烦人
我想在 SQL Server 2008 Management Studio 中以图形方式进行,可以吗?
这是我的桌子
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
【问题讨论】:
-
无法真正重现您的问题,我可以毫无问题地运行您的脚本(如您所说),然后尝试在 SQL Management Studio 中添加另一列(通过单击不按脚本)但我没有得到你提到的错误,也许你还有一些你没有写的步骤?
-
感谢回复 open table in Designer in sql 并编辑数据类型长度手机号码 40 到 41 看看报错
-
我做到了。我在设计器中打开了表格并添加了一个新列。我可以查询它,没有错误。执行你的这个脚本后你的步骤具体是什么?
-
使用设计器是一个可怕的想法(当您进行更改并且表有数据时,它会删除并重新创建表,这是一个真正的性能问题)。所有数据库代码都是代码,应该编写脚本并放入源代码控制中。如果你不喜欢写sql,那太糟糕了。
标签: sql sql-server sql-server-2008