Comment puis-je auto increment
le primary key
dans une SQL Server
table de base de données, j'ai parcouru le forum mais je ne vois pas comment.
J'ai regardé les propriétés mais je ne vois pas d'option, j'ai vu une réponse où vous allez à la Identity
propriété de spécification et la définissez sur oui et définissez la Identity increment
sur 1, mais cette section est grisée et je ne peux pas changer le non à oui.
Il doit y avoir un moyen simple de le faire, mais je ne le trouve pas.
sql-server
sql-server-2012
identity
Ledgemonkey
la source
la source
Réponses:
Assurez-vous que le type de données de la colonne Clé est
int
puis définissez l'identité manuellement, comme le montre l'imageOu exécutez simplement ce code
le code s'exécutera, s'il
ID
n'est pas la seule colonne du tableauréférence image fifo
la source
IDENTITY
propriété pourrait être appliquée à tout type de données numériques (il pourrait êtretinyint
,smallint
,int
,bigint
,numeric
,decimal
), la seule contrainte est qu'il ne pouvait pas représenter le nombre fractionnaire (donc il ne peut pas êtrefloat
oureal
, ninumeric
oudecimal
avec une échelle non nulle ) et ofc, la spécification d'identité doit être compatible avec le type de données sélectionné.Lorsque vous créez le tableau, vous pouvez créer une
IDENTITY
colonne comme suit:La
IDENTITY
propriété incrémente automatiquement la colonne à partir du numéro 1. (Notez que le type de données de la colonne doit être un entier.) Si vous souhaitez l'ajouter à une colonne existante, utilisez uneALTER TABLE
commande.Edit:
Testé un peu, et je ne trouve pas de moyen de modifier les propriétés d'identité via la fenêtre Propriétés de la colonne pour différentes tables. Je suppose que si vous voulez faire d'une colonne une colonne d'identité, vous DEVEZ utiliser une
ALTER TABLE
commande.la source
Vous devez développer la section Identité pour exposer l'incrémentation et l'amorçage.
Edit: je supposais que vous auriez un type de données entier, pas char (10). Ce qui est raisonnable, je dirais et valide lorsque j'ai posté cette réponse
la source
yes
est grisé tel quelchar(10)
(d'après le commentaire qui vient d'être publié)BookID int primary key identity
je n'ai pas spécifié à la fois l'amorce et l'incrémentation, est-ce une bonne pratique? parce que je vois la documentation dans MSDN Si aucun n'est spécifié, la valeur par défaut est (1,1).Développez votre base de données, développez votre table, faites un clic droit sur votre table et sélectionnez la conception dans la liste déroulante.
Maintenant, allez dans les propriétés de la colonne en dessous de celle-ci, faites défiler vers le bas et trouvez les spécifications d'identité , développez-la et vous trouverez Is Identity make it Yes. Maintenant, choisissez Incrément d'identité juste en dessous de lui donner la valeur que vous souhaitez incrémenter en elle.
la source
Peut-être que je manque quelque chose, mais pourquoi cela ne fonctionne-t-il pas avec l'objet SEQUENCE? N'est-ce pas ce que vous cherchez?
Exemple:
Lorsque vous référencez la séquence dans une commande INSERT, utilisez simplement:
Plus d'informations et d'options pour SEQUENCE
la source
IDENTITY
parfois saute en laissant des lacunes, il est de retour de combler ces lacunes à nouveau.IDENTITY
Ne garantit donc pas toujours l'étatLorsque vous utilisez Data Type: int, vous pouvez sélectionner la ligne que vous souhaitez obtenir auto-incrémentée et aller à la balise de propriétés de colonne. Là, vous pouvez définir l'identité sur «oui». La valeur de départ pour l'incrémentation automatique peut également y être modifiée. J'espère que je pourrais aider;)
la source
J'ai eu ce problème où j'avais déjà créé la table et ne pouvais pas la changer sans supprimer la table, donc ce que j'ai fait était: (Je ne sais pas quand ils l'ont implémenté mais l'avaient dans SQL 2016)
Faites un clic droit sur la table dans l'Explorateur d'objets:
Script Table as > DROP And CREATE To > New Query Editor Window
Faites ensuite la modification du script dit par Josien;
CREATE TABLE
faites défiler vers le bas où se trouve le, trouvez votre clé primaire et ajoutez-leIDENTITY(1,1)
à la fin avant la virgule. Script de lancement.Le script DROP and CREATE m'a également été utile à cause de ce problème. (Ce que le script généré gère.)
la source
Faites attention, comme si vous vouliez que les éléments d'identification soient contigius ou non. Comme l'ID SQLSERVER peut sauter de 1000.
Exemple: avant redémarrage ID = 11 après redémarrage, vous insérez une nouvelle ligne dans le tableau, puis l'ID sera 1012.
la source
Vous pouvez utiliser le mot-clé
IDENTITY
comme type de données pour la colonne avec unePRIMARY KEY
contrainte lors de la création de la table.ex:
Ici, le premier «1» signifie la valeur de départ et le second «1» est la valeur d'incrémentation.
la source
MS SQL Server utilise le mot-clé IDENTITY pour effectuer une fonction d'incrémentation automatique.
Dans l'exemple ci-dessus, la valeur de départ pour IDENTITY est 1 et elle augmentera de 1 pour chaque nouvel enregistrement.
Conseil: Pour spécifier que la colonne "Personid" doit commencer à la valeur 10 et incrémenter de 5, remplacez-la par IDENTITY (10,5).
Pour insérer un nouvel enregistrement dans la table "Personnes", nous n'aurons PAS à spécifier de valeur pour la colonne "Personid" (une valeur unique sera ajoutée automatiquement):
la source
Si le tableau est déjà rempli, il n'est pas possible de changer une colonne en colonne IDENTITY ou de la convertir en colonne non IDENTITY. Vous devrez exporter toutes les données, puis vous pouvez changer le type de colonne en IDENTITY ou vice versa, puis réimporter les données. Je sais que c'est un processus douloureux mais je crois qu'il n'y a pas d'autre alternative que d'utiliser la séquence comme mentionné dans ce post.
la source
ALTER TABLE ... SWITCH
pour simplement changer les métadonnées sans avoir à toucher du tout aux données. Par exemple, voyez comment définir l'incrémentation automatique après avoir créé une table sans aucune perte de données?