Improve company productivity with a Business Account.Sign Up

x
?
Solved

How to insert row with explicit primary key

Posted on 2010-11-29
7
Medium Priority
?
724 Views
Last Modified: 2012-05-10
I have a small sql ce database and I want to restore some rows from an sql script. Everything works fine, except the newly added rows are given new primary keys, even though I explicitly state them in the insert statement. I can export a row with ID = 8 but when I insert it again, I get's a new ID, how can I insert a new row and force the database to give that row a specific ID ??? Otherwise I can't restore the database and give the imported rows the correct IDs.
0
Comment
Question by:ShaunDumas
7 Comments
 
LVL 16

Accepted Solution

by:
BurnieP earned 2000 total points
ID: 34234782
You need to set identity_insert on first :

SET IDENTITY_INSERT TableName ON

INSERT INTO TableName (ID) VALUES (8)
0
 
LVL 22

Expert Comment

by:8080_Diver
ID: 34235008
You should be aware that you can cause some serious issues if you insert duplicate primary keys.
0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 34236062
>>if you insert duplicate primary keys. <<
I suspect you meant duplicate identity values.
0
A proven path to a career in data science

At Springboard, we know how to get you a job in data science. With Springboard’s Data Science Career Track, you’ll master data science  with a curriculum built by industry experts. You’ll work on real projects, and get 1-on-1 mentorship from a data scientist.

 
LVL 2

Expert Comment

by:Fahad Pathan
ID: 34236955
if u r trying to insert duplicate values in primary key column then it is not possible, but you can insert duplicate values in identity column.
0
 
LVL 22

Expert Comment

by:8080_Diver
ID: 34239264
@acperkins/@pathan_fahad,

reference the following quote from the author's original post:
except the newly added rows are given new primary keys, even though I explicitly state them in the insert

Even if the column is "just" an identity column and is not a PK, having a duplicate value in an "identity column" is going to mean that there will be a potential confusion with any use, whatsoever, of that identity column for purposes of identifying a given row.  (Sort of turns the concept of an "Identity column" into an oxymoron, don't you think?)

@ShaunDumas,
You can force the database to allow you to insert the value into the Identity column by the statements supplied in BurnieP's respons (#34234782); however, I would make sure that there are no rows with the same Identity value before inserting the rows.  This can be done by using something like the attached SQL.
INSERT INTO yourtable
(
 specify the columns
)
SELECT again specify the columns
FROM yourbackuptable B
LEFT OUTER JOIN yourtable Y
ON Y.identitycolumn = B.identitycolumn
WHERE Y.identitycolumn IS NULL;

Open in new window

0
 

Author Closing Comment

by:ShaunDumas
ID: 34242705
Nice!
0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 34244740
>>Sort of turns the concept of an "Identity column" into an oxymoron, don't you think<<
No doubt.  But you have to admit that the following is a tad impossible: "insert duplicate primary keys."
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

This article will show a step by step guide on how to mask column values in Oracle 12c using DBMS_REDACT full redaction option. This option is available on licensed Oracle Enterprise edition as part of Oracle's Advanced Security.
In this article, we will see two different methods to recover deleted data. The first option will be using the transaction log to identify the operation and restore it in a specified section of the transaction log. The second option is simpler and c…
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.
SQL Database Recovery Software repairs the MDF & NDF Files, corrupted due to hardware related issues or software related errors. Provides preview of recovered database objects and allows saving in either MSSQL, CSV, HTML or XLS format. Ensures recov…

595 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question