违反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.
本文介绍了违反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 varchar(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 thatSectionId
is thePrimaryKey
of TableSection_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 theSecionId
as it is thePrimaryKey
. 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 theSectionId
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屋!
查看全文