违反PRIMARY KEY约束'PK_Section_details'。无法在对象'dbo.Section_details'中插入重复键。该语句已终止。 [英] Violation of PRIMARY KEY constraint 'PK_Section_details'. Cannot insert duplicate key in object 'dbo.Section_details'. The statement has been terminated.

查看:544
本文介绍了违反PRIMARY KEY约束'PK_Section_details'。无法在对象'dbo.Section_details'中插入重复键。该语句已终止。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨朋友



以下是我的插入和更新查询存储过程



 alter procedure sp_insertsection(@ sectionid int,@ sectionname char(10),@ classname varchar(30),@ acyear varchar(30),@ datetime datetime,@ adminid int,@ medium v​​archar(20))
作为
如果存在则开始
(select * from schoolcampus.dbo.Section_details其中SectionId = @ sectionid和SectionName = @ sectionname)
begin
update schoolcampus.dbo.Section_details set SectionName = @ sectionname,ClassName = @ classname,AcademicYear = @ acyear,Medium = @ medium,Updateddatetime = @ datetime,adminid = @ adminid where SectionId = @ sectionid
end
else
begin
插入schoolcampus.dbo.Section_details(SectionId,SectionName,className,AcademicYear,Createddatetime,adminid,Medium)值(@ sectionid,@ sectionname,@ classname,@ acyear,@ datetime,@ adminid,@ medium)
结束
结束



执行部分

执行sp_insertsection 51,'A','我' ,'2013 -2014','07-17-2013 12:35:000',5002,'泰米尔'



执行存储过程时出现上述错误。

解决方案

在您的情况下,如果您尝试插入SectionId和SectionName,如下所示:



SectionId,SectionName

51,A

51,B

.....



然后,SectionId和SectionName字段不应该是唯一的,因为您正在尝试根据查询创建复合主键:



 如果 存在选择 * 来自 schoolcampus.dbo.Section_details 其中 SectionId = @ sectionid  SectionName = @ sectionname)


从错误中,我猜 SectionId PrimaryKey Section_details



您的Update语句是正确的,因为您在获取后更新特定的部分(如果它存在)。



如果它不存在,您需要插入所有细节,但不能将值插入 SecionId 因为它是 PrimaryKey 。这就是为什么它会抛出异常,因为已经存在Id 51 的部分。

  insert   into  schoolcampus.dbo.Section_details( SectionId ,SectionName,className,AcademicYear,Createddatetime,adminid,Medium)(@  sectionid  @ sectionname  @ classname  @ acyear  @ datetime  @adminid  @ medium 





所以,删除从此查询中插入 SectionId 。之后它应该没有任何错误运行。

  insert   into  schoolcampus.dbo.Section_details(SectionName,className,AcademicYear,Createddatetime,adminid,Medium) values  @sectionname  @ classname  @ acyear  @datetime  @ adminid  @ medium 


Hi friends

The following is my stored procedure for insert and update query

alter procedure sp_insertsection(@sectionid int,@sectionname char(10),@classname varchar(30),@acyear varchar(30),@datetime datetime,@adminid int,@medium varchar(20))
as
begin
if exists(select * from schoolcampus.dbo.Section_details where SectionId=@sectionid and SectionName=@sectionname)
begin
update  schoolcampus.dbo.Section_details set SectionName=@sectionname,ClassName=@classname,AcademicYear=@acyear,Medium=@medium,Updateddatetime=@datetime,adminid=@adminid where SectionId=@sectionid
end
else
begin
insert into schoolcampus.dbo.Section_details(SectionId,SectionName,className,AcademicYear,Createddatetime,adminid,Medium) values(@sectionid,@sectionname,@classname,@acyear,@datetime,@adminid,@medium)
end
end


execution part

exec sp_insertsection 51,'A','I','2013-2014','07-17-2013 12:35:000',5002,'Tamil'


The above error is occured when executing the stored procedure.

解决方案

In your case if you are trying to insert into SectionId and SectionName like below:

SectionId, SectionName
51, A
51, B
.....

then, SectionId and SectionName fields should not be unique, as you are trying to create a composite primary key as per you query:

if exists(select * from schoolcampus.dbo.Section_details where SectionId=@sectionid and SectionName=@sectionname)


From the error, I guess that SectionId is the PrimaryKey of Table Section_details.

Your Update statement is correct as you are updating a particular Section after getting it (if it exists).

If it doesn't exist, you need to insert all the details, but you can't insert value to the SecionId as it is the PrimaryKey. That's why it is throwing exception that there is already a Section with Id 51.

insert into schoolcampus.dbo.Section_details(SectionId,SectionName,className,AcademicYear,Createddatetime,adminid,Medium) values(@sectionid,@sectionname,@classname,@acyear,@datetime,@adminid,@medium)



So, remove the SectionId insertion from this query. And after that it should run without any errors.

insert into schoolcampus.dbo.Section_details(SectionName,className,AcademicYear,Createddatetime,adminid,Medium) values(@sectionname,@classname,@acyear,@datetime,@adminid,@medium)


这篇关于违反PRIMARY KEY约束'PK_Section_details'。无法在对象'dbo.Section_details'中插入重复键。该语句已终止。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆