web-dev-qa-db-fra.com

comment incrémenter la valeur de colonnes entières de 1 en SQL

Mes questions est

comment incrémenter la valeur d'une colonne de 1.

Par exemple, supposons qu'une colonne ID ait les valeurs 1,2,3,4, ..

Maintenant, quand je mets à jour cette table, la colonne ID doit incrémenter de 1,

Maintenant, ID deviendra 2,3,4,5, ..

63
Varinder

Pour en ajouter un à chaque valeur de la table ...

UPDATE myTable
SET ID = ID + 1

Pour créer une nouvelle valeur, une plus que la plus haute précédente (généralement), utilisez une colonne avec IDENTITY

107
gbn

Si vous voulez avoir un numéro unique pour chaque ligne générée automatiquement, il s'agit de IDENTITY conformément à la réponse de Neil. 

Si chaque fois que vous mettez à jour le tableau, vous voulez augmenter les valeurs (c’est-à-dire qu’elles ne sont pas des clés):

Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>
34
kaj

Essaye ça :

Update Emp set testCount= ISNULL(testCount, 0) + 1 where testId=1
3
kishor soneji

Dans Oracle, le code est un peu plus compliqué.

Vous devrez créer un champ auto-incrémenté avec l'objet séquence (cet objet génère une séquence numérique).

Utilisez la syntaxe CREATE SEQUENCE suivante:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

Le code ci-dessus crée un objet séquence appelé seq_person, qui commence par 1 et sera incrémenté de 1. Il mettra également en cache jusqu'à 10 valeurs pour améliorer les performances. L'option cache spécifie le nombre de valeurs de séquence qui seront stockées en mémoire pour un accès plus rapide.

Pour insérer un nouvel enregistrement dans la table "Personnes", nous devrons utiliser la fonction nextval (cette fonction extrait la valeur suivante de la séquence seq_person):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

L'instruction SQL ci-dessus insérerait un nouvel enregistrement dans la table "Personnes". Le numéro suivant de la séquence seq_person sera attribué à la colonne "ID". La colonne "Prénom" serait définie sur "Lars" et la colonne "Nom" sur "Monsen".

1
piyushj

Vous pouvez utiliser IDENTITY qui le fera pour vous.

CREATE TABLE [dbo].[MyTable](
    [MyTableID] [int] IDENTITY(1,1) NOT NULL,
    -- Other columns
)

Lorsque vous insérez votre premier enregistrement, vous obtenez une Id de 1.

0
Neil Knight

Vous pouvez essayer ce qui suit:

DECLARE @i INT
SET @i = @@ROWCOUNT + 1

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)
0
Tony Gallone