[dba-SQLServer] Random autonumber ID

Gustav Brock gustav at cactus.dk
Mon Jun 11 05:54:53 CDT 2012


Hi Jim

Sequential numbering is my preference too. 

If that isn't enough I prefer the GUID because of its simplicity.

/gustav


>>> jlawrenc1 at shaw.ca 08-06-12 18:07 >>>
If data collision is never going to be an issue then random numbers are fine
but then it asks the question, "Why". 

I prefer a controlled sequential numbering system with an appropriate
location prefix but another system that can be used is to assemble a serial
date+time value. The number is always proceeding, never any data collisions
and it have addition uses. I use a similar method in account transactions
where easy forensic account be done in the future.

Jim  

-----Original Message-----
From: dba-sqlserver-bounces at databaseadvisors.com
[mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of Gustav
Brock
Sent: Friday, June 08, 2012 7:44 AM
To: dba-sqlserver at databaseadvisors.com
Subject: [dba-SQLServer] Random autonumber ID

Hi all

I'm working on upsizing an Access backend to SQL Server and used Access'
wizard for this.
That worked with no errors.

However, the client used Random Autonumber for IDs in Access and these are
converted to integer with an associated trigger to create the random ID for
new records:

USE [PPT]
GO
/****** Object:  Trigger [dbo].[T_UserLastDataTable_ITrig]    Script Date:
06/08/2012 16:19:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[T_UserLastDataTable_ITrig] ON [dbo].[UserLastDataTable]

FOR INSERT 
AS
SET NOCOUNT ON
DECLARE @randc int, @newc int    
/* EMULATION CODE FOR AUTONUMBERING */
/* * EMULATION CODE FOR RANDOM AUTONUMBERING FOR FIELD "ID" */
SELECT @randc = (SELECT convert(int, rand() * power(2, 30)))
SELECT @newc = (SELECT ID FROM inserted) 

UPDATE UserLastDataTable SET ID = @randc WHERE ID = @newc


Is this really the best method?
Any disadvantages?
Would we be better off changing ID in Access to either sequential IDs or
even GUID before running the update wizard?

/gustav



More information about the dba-SQLServer mailing list