SQL 2000,违反了 PRIMARY KEY 约束 '***'。不能在对象 '*' 中插入重复键

kaixin110 2009-01-12 11:14:24


服务器: 消息 2627,级别 14,状态 1,行 1
违反了 PRIMARY KEY 约束 'PK_China'。不能在对象 'China' 中插入重复键。
语句已终止。


问题补充:我的主键列是自动增长呀,为什么会出现这个
...全文
15139 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
kye_jufei 2009-01-13
  • 打赏
  • 举报
回复
重復索引,將自增類型重新設定試試
kaixin110 2009-01-12
  • 打赏
  • 举报
回复
没有触发器的,我检查了
srgcc 2009-01-12
  • 打赏
  • 举报
回复
shi bu shi you chu fa qi
kaixin110 2009-01-12
  • 打赏
  • 举报
回复
China这个表我确认了,是自动生长类型的

主键列是ItemID,上面的有回复的


表结构SQL
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[China]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[China]
GO

CREATE TABLE [dbo].[China] (
[ItemId] [int] IDENTITY (1, 1) NOT NULL ,
[Title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
[City] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[PostCode] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[CName] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
[X] [int] NULL ,
[Y] [int] NULL ,
[CType] [int] NULL ,
[IDX] [int] NULL ,
[MAP] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Layer] [int] NULL ,
[Cell] [int] NULL ,
[CategoryName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[BusinessID] [int] NULL ,
[Server] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Telephone] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Address] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[CityID] [int] NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[China] ADD
CONSTRAINT [PK_China] PRIMARY KEY CLUSTERED
(
[ItemId]
) ON [PRIMARY]
GO

乐乐妈 2009-01-12
  • 打赏
  • 举报
回复
看看你的China表设计,是不是你所说的主键是自动增长的.
另外你也可以手动插入几条语句,看看是不是自动生成了主键.
gjz_1209 2009-01-12
  • 打赏
  • 举报
回复
插入语句不要包括主键列就可以了。
fcuandy 2009-01-12
  • 打赏
  • 举报
回复
提示已经很明确了。

按你的说法,应该不会有这个问题。

排除此问题:
1,确认你的主健是否你所说的标识列。
2,确认你这表上建有触发器,可能会在里面进行向其它表的插入操作。
子陌红尘 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kaixin110 的回复:]
INSERT INTO China (BusinessID,title,Telephone,Address,CityID,Server,x,y,city,categoryname)
SELECT commid,commName,commTel,commAddress,cityid,host,x,y,city,'2' FROM community where cityid=500100
[/Quote]

给出表结构,另外,以上SQL语句不包括主键列吧?
kaixin110 2009-01-12
  • 打赏
  • 举报
回复
EXEC sp_pkeys @table_name='China'

Table_QUalifier table_owner table_name column_name Key_seq pk_Name
ditu dbo china itemid 1 PK_China
水族杰纶 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 kaixin110 的帖子:]


服务器: 消息 2627,级别 14,状态 1,行 1
违反了 PRIMARY KEY 约束 'PK_China'。不能在对象 'China' 中插入重复键。
语句已终止。


问题补充:我的主键列是自动增长呀,为什么会出现这个
[/Quote]
/*
查看你的主鍵在哪列
一個表不可能出現兩個主鍵
SQL查询主键信息
*/
EXEC sp_pkeys @table_name='表名'
--or
SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='表名'
csdyyr 2009-01-12
  • 打赏
  • 举报
回复
主键是?
kaixin110 2009-01-12
  • 打赏
  • 举报
回复
SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='China'

结果

Table_NAME COLUMN_NAME
China ItemID
kaixin110 2009-01-12
  • 打赏
  • 举报
回复
INSERT INTO China (BusinessID,title,Telephone,Address,CityID,Server,x,y,city,categoryname)
SELECT commid,commName,commTel,commAddress,cityid,host,x,y,city,'2' FROM community where cityid=500100
水族杰纶 2009-01-12
  • 打赏
  • 举报
回复
--查詢主鍵信息
SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='表名'
wsh236 2009-01-12
  • 打赏
  • 举报
回复
并发。?
子陌红尘 2009-01-12
  • 打赏
  • 举报
回复
你执行insert操作的SQL语句?
ChinaJiaBing 2009-01-12
  • 打赏
  • 举报
回复

查询一下你插入的语句。。。

等不到来世 2009-01-12
  • 打赏
  • 举报
回复
create table tb(id int identity(1,1) primary key, c int)
go
insert tb values(100)
insert tb values(200)
select * from tb
/*
id c
----------- -----------
1 100
2 200
*/

--重置种子为1
dbcc checkident('tb',reseed,1)
go
--此时再插入数据,id从1自增为2,与表中已有标识列重复,于是报错
insert tb values(300)
/*
消息 2627,级别 14,状态 1,第 1 行
违反了 PRIMARY KEY 约束 'PK__tb__70C8B53F'。不能在对象 'dbo.tb' 中插入重复键。
语句已终止。
*/

--重置种子为2,插入正常
dbcc checkident('tb',reseed,2)
go
insert tb values(300)

select * from tb
/*
id c
----------- -----------
1 100
2 200
3 300
*/
drop table tb
claro 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 kaixin110 的回复:]
也就是说,修改表结构,取消自动增长类型,,再增加自动增长类型.OK

[/Quote]
了解
等不到来世 2009-01-12
  • 打赏
  • 举报
回复
估计你通过某个操作把自增列的种子给改小了。
所以insert的时候报重复性错误。
取消自增长,再加上自增长,种子恢复正常。
加载更多回复(4)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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