OVH Cloud OVH Cloud

Identity seed

6 réponses
Avatar
el.c. - myLittleTools.net
Bonjour

Savez vous s'il existe un moyen en T-SQL de modifier la valeur de seed
d'une colonne IDENTITY.
Je n'ai rien trouvé trouvé du côté de ALTER TABLE. Je ne pense pas que
DBCC CHECKIDENT soit la solution (ou alors je n'ai pas réussi)

EM recrée entièrement la table, ce que je voudrais éviter.

Cordialement

--
// myLittleTools.net : leading provider of web-based applications.
// myLittleAdmin WebHosting Edition is now available
// http://www.mylittletools.net
// webmaster@mylittletools.net

6 réponses

Avatar
Jorge Lavado
Bonjour

C´est portant ce que le moteur du SQL SERVER fait quand tu change em Design mode une TABLE.(recrée entièrement la table)

Example:(
-------------------------------------------------------------------
BEGIN TRANSACTIO
SET QUOTED_IDENTIFIER O
SET TRANSACTION ISOLATION LEVEL SERIALIZABL
SET ARITHABORT O
SET NUMERIC_ROUNDABORT OF
SET CONCAT_NULL_YIELDS_NULL O
SET ANSI_NULLS O
SET ANSI_PADDING O
SET ANSI_WARNINGS O
COMMI
BEGIN TRANSACTIO
CREATE TABLE dbo.Table

nr_seq int NOT NULL IDENTITY (1, 1)
teste char(10) NUL
) ON [PRIMARY
G
COMMI
-------------------------------------------------------------------
BEGIN TRANSACTIO
SET QUOTED_IDENTIFIER O
SET TRANSACTION ISOLATION LEVEL SERIALIZABL
SET ARITHABORT O
SET NUMERIC_ROUNDABORT OF
SET CONCAT_NULL_YIELDS_NULL O
SET ANSI_NULLS O
SET ANSI_PADDING O
SET ANSI_WARNINGS O
COMMI
BEGIN TRANSACTIO
CREATE TABLE dbo.Tmp_Table

nr_seq int NOT NULL IDENTITY (10, 1)
teste char(10) NUL
) ON [PRIMARY
G
SET IDENTITY_INSERT dbo.Tmp_Table1 O
G
IF EXISTS(SELECT * FROM dbo.Table1
EXEC('INSERT INTO dbo.Tmp_Table1 (nr_seq, teste
SELECT nr_seq, teste FROM dbo.Table1 TABLOCKX'
G
SET IDENTITY_INSERT dbo.Tmp_Table1 OF
G
DROP TABLE dbo.Table
G
EXECUTE sp_rename N'dbo.Tmp_Table1', N'Table1', 'OBJECT
G
COMMI
Avatar
Med Bouchenafa[MVP]
L'exemple suivant ne pose aucun problème à changer la valeur du "seed"
CREATE TABLE tblTest
(
a int identity (5,2)
)
GO
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
GO
SELECT * FROM tblTest
GO
DBCC CHECKIDENT (tblTest, RESEED, 1)
GO
GO
INSERT INTO tblTest DEFAULT VALUES
GO
SELECT * FROM tblTest


--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris
"el.c. - myLittleTools.net" wrote in
message news:#
Bonjour

Savez vous s'il existe un moyen en T-SQL de modifier la valeur de seed
d'une colonne IDENTITY.
Je n'ai rien trouvé trouvé du côté de ALTER TABLE. Je ne pense pas que
DBCC CHECKIDENT soit la solution (ou alors je n'ai pas réussi)

EM recrée entièrement la table, ce que je voudrais éviter.

Cordialement

--
// myLittleTools.net : leading provider of web-based applications.
// myLittleAdmin WebHosting Edition is now available
// http://www.mylittletools.net
//




Avatar
Jorge Lavado
Bonjour

DBCC CHECKIDENT (tblTest, RESEED, 1) change le SEED, mais atention au donner qui existe dejá

BOL

The current identity value is set to the new_reseed_value. If no rows have been inserted to the table since it was created, the first row inserted after executing DBCC CHECKIDENT will use new_reseed_value as the identity. Otherwise, the next row inserted will use new_reseed_value + 1. If the value of new_reseed_value is less than the maximum value in the identity column, error message 2627 will be generated on subsequent references to the table
Avatar
el.c. - myLittleTools.net
Merci Med pour l'exemple

Mais ton exemple permet de "re-définir" la valeur de départ (id.start)
C'est l'incrément du compteur que je cherche à modifier ( 2 dans ton
exemple) ce qu'à priori DBCC CHECKIDENT ne permet pas.

cordialement
el.c.

Med Bouchenafa[MVP] typed:
L'exemple suivant ne pose aucun problème à changer la valeur du "seed"
CREATE TABLE tblTest
(
a int identity (5,2)
)
GO
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
GO
SELECT * FROM tblTest
GO
DBCC CHECKIDENT (tblTest, RESEED, 1)
GO
GO
INSERT INTO tblTest DEFAULT VALUES
GO
SELECT * FROM tblTest


Bonjour

Savez vous s'il existe un moyen en T-SQL de modifier la valeur de
seed d'une colonne IDENTITY.
Je n'ai rien trouvé trouvé du côté de ALTER TABLE. Je ne pense pas
que DBCC CHECKIDENT soit la solution (ou alors je n'ai pas réussi)

EM recrée entièrement la table, ce que je voudrais éviter.

Cordialement

--
// myLittleTools.net : leading provider of web-based applications.
// myLittleAdmin WebHosting Edition is now available
// http://www.mylittletools.net
//




Avatar
Med Bouchenafa[MVP]
Je me disais bien que ce n'était pas le "seed" mais l' "increment" que tu
voulais changer
Peut-être en créant une autre colonne qui sauvegarde le contenu de la
colonne identity comme ceci

CREATE TABLE tblTest
(
a int identity (1,3)
)
GO
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
GO
SELECT * FROM tblTest
GO
ALTER TABLE tbltest ADD b int
GO
UPDATE tblTest SET b=a
GO
ALTER TABLE tbltest DROP COLUMN a
GO
ALTER TABLE tbltest ADD a int identity(1,1)
GO
ALTER TABLE tbltest DROP COLUMN b
GO
SELECT * FROM tblTest


--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris
"el.c. - myLittleTools.net" wrote in
message news:
Merci Med pour l'exemple

Mais ton exemple permet de "re-définir" la valeur de départ (id.start)
C'est l'incrément du compteur que je cherche à modifier ( 2 dans ton
exemple) ce qu'à priori DBCC CHECKIDENT ne permet pas.

cordialement
el.c.

Med Bouchenafa[MVP] typed:
> L'exemple suivant ne pose aucun problème à changer la valeur du "seed"
> CREATE TABLE tblTest
> (
> a int identity (5,2)
> )
> GO
> INSERT INTO tblTest DEFAULT VALUES
> INSERT INTO tblTest DEFAULT VALUES
> INSERT INTO tblTest DEFAULT VALUES
> GO
> SELECT * FROM tblTest
> GO
> DBCC CHECKIDENT (tblTest, RESEED, 1)
> GO
> GO
> INSERT INTO tblTest DEFAULT VALUES
> GO
> SELECT * FROM tblTest
>
>
>> Bonjour
>>
>> Savez vous s'il existe un moyen en T-SQL de modifier la valeur de
>> seed d'une colonne IDENTITY.
>> Je n'ai rien trouvé trouvé du côté de ALTER TABLE. Je ne pense pas
>> que DBCC CHECKIDENT soit la solution (ou alors je n'ai pas réussi)
>>
>> EM recrée entièrement la table, ce que je voudrais éviter.
>>
>> Cordialement
>>
>> --
>> // myLittleTools.net : leading provider of web-based applications.
>> // myLittleAdmin WebHosting Edition is now available
>> // http://www.mylittletools.net
>> //




Avatar
el.c. - myLittleTools.net
Super !
il faut encore jouer avec les FK_, mais l'idée est là.
Merci beaucoup

el.c.

Med Bouchenafa[MVP] typed:
Je me disais bien que ce n'était pas le "seed" mais l' "increment"
que tu voulais changer
Peut-être en créant une autre colonne qui sauvegarde le contenu de la
colonne identity comme ceci

CREATE TABLE tblTest
(
a int identity (1,3)
)
GO
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
GO
SELECT * FROM tblTest
GO
ALTER TABLE tbltest ADD b int
GO
UPDATE tblTest SET b=a
GO
ALTER TABLE tbltest DROP COLUMN a
GO
ALTER TABLE tbltest ADD a int identity(1,1)
GO
ALTER TABLE tbltest DROP COLUMN b
GO
SELECT * FROM tblTest


Merci Med pour l'exemple

Mais ton exemple permet de "re-définir" la valeur de départ
(id.start) C'est l'incrément du compteur que je cherche à modifier (
2 dans ton exemple) ce qu'à priori DBCC CHECKIDENT ne permet pas.

cordialement
el.c.

Med Bouchenafa[MVP] typed:
L'exemple suivant ne pose aucun problème à changer la valeur du
"seed" CREATE TABLE tblTest
(
a int identity (5,2)
)
GO
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
INSERT INTO tblTest DEFAULT VALUES
GO
SELECT * FROM tblTest
GO
DBCC CHECKIDENT (tblTest, RESEED, 1)
GO
GO
INSERT INTO tblTest DEFAULT VALUES
GO
SELECT * FROM tblTest


Bonjour

Savez vous s'il existe un moyen en T-SQL de modifier la valeur de
seed d'une colonne IDENTITY.
Je n'ai rien trouvé trouvé du côté de ALTER TABLE. Je ne pense pas
que DBCC CHECKIDENT soit la solution (ou alors je n'ai pas réussi)

EM recrée entièrement la table, ce que je voudrais éviter.

Cordialement

--
// myLittleTools.net : leading provider of web-based applications.
// myLittleAdmin WebHosting Edition is now available
// http://www.mylittletools.net
//