Google Mail Calendar Documents Reader Web more »
Recently Visited Groups | Help | Sign in
Google Groups Home
Guaranteed consecutive identity values
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  7 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Follow-up To:
Add Cc | Add Follow-up to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers that you hear
 
Michael Abraham  
View profile   Translate to Translated (View Original)
 More options 10 Feb 2006, 14:48
Newsgroups: microsoft.public.sqlserver.programming
From: "Michael Abraham" <mabraha...@newsgroup.nospam>
Date: Fri, 10 Feb 2006 09:48:24 -0500
Local: Fri 10 Feb 2006 14:48
Subject: Guaranteed consecutive identity values
If I do a INSERT INTO <table> SELECT ... and <table> has an identity column
with an increment equal to 1, does SQL/Server 2000 and/or SQL/Server 2005
guarantee that the identity values generated for a single successful INSERT
of this type will be consecutive.  So if I do an INSERT INTO ... SELECT
which inserts, for example, 17 rows, am I guaranteed that the identity
values assigned will be N, N+1, N+2, ..., N+16.

That is, is it guaranteed that simultaneous INSERTs on other connections
will not interrupt the sequence of identity values assigned.

Thanks,

Mike


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
David Portas  
View profile   Translate to Translated (View Original)
 More options 10 Feb 2006, 15:22
Newsgroups: microsoft.public.sqlserver.programming
From: "David Portas" <REMOVE_BEFORE_REPLYING_dpor...@acm.org>
Date: 10 Feb 2006 07:22:39 -0800
Local: Fri 10 Feb 2006 15:22
Subject: Re: Guaranteed consecutive identity values

Michael Abraham wrote:
> If I do a INSERT INTO <table> SELECT ... and <table> has an identity column
> with an increment equal to 1, does SQL/Server 2000 and/or SQL/Server 2005
> guarantee that the identity values generated for a single successful INSERT
> of this type will be consecutive.  So if I do an INSERT INTO ... SELECT
> which inserts, for example, 17 rows, am I guaranteed that the identity
> values assigned will be N, N+1, N+2, ..., N+16.

> That is, is it guaranteed that simultaneous INSERTs on other connections
> will not interrupt the sequence of identity values assigned.

> Thanks,

> Mike

Not necessarily. For example if you use the IGNORE_DUP_KEY option
you'll find that the IDENTITY values for a multiple row insert are not
always contiguous. I haven't seen any documentation to the contrary so
I suggest that it's safer to assume there may be gaps in the sequence
of values generated by a set-based INSERT in any case.

Why would it matter? You can't avoid gaps in the sequence of values in
an IDENTITY column anyway. To retrieve the IDENTITY values for the
inserted rows you should always be able to use an alternate key of the
table.

--
David Portas, SQL Server MVP

Whenever possible please post enough code to reproduce your problem.
Including CREATE TABLE and INSERT statements usually helps.
State what version of SQL Server you are using and specify the content
of any error messages.

SQL Server Books Online:
http://msdn2.microsoft.com/library/ms130214(en-US,SQL.90).aspx
--


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dave Frommer  
View profile   Translate to Translated (View Original)
 More options 10 Feb 2006, 15:20
Newsgroups: microsoft.public.sqlserver.programming
From: "Dave Frommer" <a...@spam.com>
Date: Fri, 10 Feb 2006 10:20:09 -0500
Local: Fri 10 Feb 2006 15:20
Subject: Re: Guaranteed consecutive identity values
No, that is not guaranteed.

"Michael Abraham" <mabraha...@newsgroup.nospam> wrote in message

news:epPcMElLGHA.4064@TK2MSFTNGP10.phx.gbl...


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Tibor Karaszi  
View profile   Translate to Translated (View Original)
 More options 10 Feb 2006, 15:21
Newsgroups: microsoft.public.sqlserver.programming
From: "Tibor Karaszi" <tibor_please.no.email_kara...@hotmail.nomail.com>
Date: Fri, 10 Feb 2006 16:21:31 +0100
Local: Fri 10 Feb 2006 15:21
Subject: Re: Guaranteed consecutive identity values
A quick test shows "no":

Create the table:
create table t(c1 int identity, c2 char(1))

From connection 1 (adjust time in WAITFOR):
WAITFOR TIME '16:19:05'
INSERT INTO t (c2)
 SELECT TOP 1000 'a' FROM sysobjects, syscolumns

From connection 2 (adjust time in WAITFOR):
WAITFOR TIME '16:19:05'
INSERT INTO t (c2)
 SELECT TOP 1000 'b' FROM sysobjects, syscolumns

From connection 3 (adjust time in WAITFOR):
WAITFOR TIME '16:19:05'
INSERT INTO t (c2)
 SELECT TOP 1000 'c' FROM sysobjects, syscolumns

Then check the results. Order by c1 and you will the the "rows interleaved". I tried this in 200 and
2005 with same results.

--
Tibor Karaszi, SQL Server MVP
http://www.karaszi.com/sqlserver/default.asp
http://www.solidqualitylearning.com/
Blog: http://solidqualitylearning.com/blogs/tibor/

"Michael Abraham" <mabraha...@newsgroup.nospam> wrote in message

news:epPcMElLGHA.4064@TK2MSFTNGP10.phx.gbl...


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Michael Abraham  
View profile   Translate to Translated (View Original)
 More options 10 Feb 2006, 16:53
Newsgroups: microsoft.public.sqlserver.programming
From: "Michael Abraham" <mabraha...@newsgroup.nospam>
Date: Fri, 10 Feb 2006 11:53:38 -0500
Local: Fri 10 Feb 2006 16:53
Subject: Re: Guaranteed consecutive identity values
Thanks for all your responses.

Specifically addressing David's question, this is a case where I'm working
with an existing schema and the table in question does not have an alternate
key that I can use to retrieve the actual identity values.  So I was hoping
that I could rely on consecutiveness to allow me to infer the set of
identity values assigned from the last identity value inserted (via
SCOPE_IDENTITY) and the row count.

I guess it's back to the drawing board.

Thanks again for your speedy (and convincingly reasoned) responses.

Mike

"David Portas" <REMOVE_BEFORE_REPLYING_dpor...@acm.org> wrote in message

news:1139584959.654362.29500@g14g2000cwa.googlegroups.com...


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Tibor Karaszi  
View profile   Translate to Translated (View Original)
 More options 10 Feb 2006, 19:50
Newsgroups: microsoft.public.sqlserver.programming
From: "Tibor Karaszi" <tibor_please.no.email_kara...@hotmail.nomail.com>
Date: Fri, 10 Feb 2006 20:50:47 +0100
Local: Fri 10 Feb 2006 19:50
Subject: Re: Guaranteed consecutive identity values
If you are on 2005, you can perhaps use the new OUTPUT option for the INSERT command.

--
Tibor Karaszi, SQL Server MVP
http://www.karaszi.com/sqlserver/default.asp
http://www.solidqualitylearning.com/
Blog: http://solidqualitylearning.com/blogs/tibor/

"Michael Abraham" <mabraha...@newsgroup.nospam> wrote in message

news:O7y$LKmLGHA.2628@TK2MSFTNGP15.phx.gbl...


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Brian Selzer  
View profile   Translate to Translated (View Original)
 More options 10 Feb 2006, 20:14
Newsgroups: microsoft.public.sqlserver.programming
From: "Brian Selzer" <br...@selzer-software.com>
Date: Fri, 10 Feb 2006 15:14:46 -0500
Local: Fri 10 Feb 2006 20:14
Subject: Re: Guaranteed consecutive identity values
Then the schema is malformed.  With only one exception, a surrogate (or
IDENTITY column) should never be the only candidate key for a permanent
table.  The exception deals with abstract data and is beyond the scope of a
single newsgroup post, but the underlying rule is that if any column in a
table contains information that originates from outside of the database or
is used to enforce a database constraint, then if there is a surrogate,
there must also be an additional candidate key--even if it includes every
column but the surrogate.

"Michael Abraham" <mabraha...@newsgroup.nospam> wrote in message

news:O7y$LKmLGHA.2628@TK2MSFTNGP15.phx.gbl...


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2009 Google