Mes questions sont
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, lorsque je mets à jour cette table, la ID
colonne doit augmenter de 1,
Maintenant ID
deviendra 2,3,4,5, ..
sql-server-2005
Varinder
la source
la source
Réponses:
Pour en ajouter une à chaque valeur du tableau ...
UPDATE myTable SET ID = ID + 1
Pour créer une nouvelle valeur, une de plus que la précédente la plus élevée (généralement), utilisez une colonne avec IDENTITY
la source
ISNULL
déclaration comme celle-ci:UPDATE myTable SET ID = ISNULL(ID, 0) + 1
(Tiré de cette réponse SO )SET [Lic] = [Lic] + @dif
. Remarque la variable @dif peut être positive, 0 ou négativeSi vous voulez avoir un numéro unique pour chaque ligne générée automatiquement, il s'agit de l'IDENTITÉ selon la réponse de Neil.
Si à chaque fois que vous mettez à jour la table, vous souhaitez augmenter les valeurs (c'est-à-dire qu'il ne s'agit pas de clés):
Update MyTable Set IDColumn = IDColumn + 1 Where <whatever>
la source
Essaye ça:
Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1
la source
Vous pouvez utiliser
IDENTITY
qui fera cela pour vous.CREATE TABLE [dbo].[MyTable]( [MyTableID] [int] IDENTITY(1,1) NOT NULL, -- Other columns )
Lorsque vous insérez votre premier enregistrement, vous obtenez un
Id
sur 1.la source
Dans Oracle, le code est un peu plus délicat.
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 s'incrémentera de 1. Il mettra également en cache jusqu'à 10 valeurs pour 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 "Persons", nous devrons utiliser la fonction nextval (cette fonction récupère 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ère un nouvel enregistrement dans la table "Persons". La colonne "ID" recevrait le numéro suivant de la séquence seq_person. La colonne "FirstName" serait définie sur "Lars" et la colonne "LastName" serait définie sur "Monsen".
la source
Vous pouvez essayer ce qui suit:
DECLARE @i INT SET @i = @@ROWCOUNT + 1 INSERT INTO YourTable (Identity Column) VALUES (@i + 1)
la source