在SQL SERVER 中对表不能设置主键

“t1”表-无法创建索引“PK_t1”。因为发现对象名称'dbo.t1'和索引名称'PK_t1'有重复的键,所以CREATEUNIQUEINDEX语句终止。重复的键值为(... “t1”表
- 无法创建索引“PK_t1”。
因为发现对象名称 'dbo.t1' 和索引名称 'PK_t1' 有重复的键,所以 CREATE UNIQUE INDEX 语句终止。重复的键值为 (1)。
无法创建约束。请参阅前面的错误消息。
语句已终止。、

怎么处理 解决
展开
 我来答
姣过手飘找人1Q
2018-05-09 · TA获得超过1904个赞
知道大有可为答主
回答量:2466
采纳率:70%
帮助的人:360万
展开全部
数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。
主键的作用 1、 主键是用于唯一标识数据库表中一行数据的。2、 作为一个可以被外键有效引用的对象。
主键的设计原则 1、 主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id;而这种情况就不可能了:“学生表”需要支持这样的需求“学生注销后,可以重新激活自己的信息,而且还要保持自己的号码跟原来的一直”,这样的话主键就不能满足要求了。2、 唯一性。3、 非空性:主键的值是不可重复的,也不可以为空。4、尽量不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。注意:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。5、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。6、主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。
创建主键--在创建表时就可以对字段加上约束:
create table Student(StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性)StudentName nvarchar(15) not null, --加非空约束,不加"not null" 默认为:可以为空StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名)StudentAge int DEFAULT ((0)), --加默认值约束StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加检查约束,格式:check (条件表达式))
arkon
推荐于2018-05-09 · 超过35用户采纳过TA的回答
知道答主
回答量:68
采纳率:81%
帮助的人:14.3万
展开全部
你要设置主键,首先要保证这个字段里的值全部unique。所以你要么清空表,要么删除重复键值。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
射手幽灵伊
2013-06-18 · TA获得超过2716个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:1954万
展开全部
已经有重复的数据了,无法创建,要先把重复的数据删除了。
或是再加上其他的字段一起做主键。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljuyx010
2013-06-18 · TA获得超过153个赞
知道小有建树答主
回答量:337
采纳率:0%
帮助的人:79.1万
展开全部
你要创建主键的列里有重复性的内容,删除重复内容就可以创建了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式