Maison > Article > tutoriels informatiques > Comment implémenter la numérotation automatique dans SQL Server 2008 ?
Remarque : L'attribut d'identité ne peut être défini que pour les colonnes qui n'autorisent pas les valeurs nulles et qui ont des types de données décimaux, int, numériques, smallint, bigint ou tinyint. De plus, les propriétés d'identité ne peuvent pas être définies sur les colonnes de clé primaire.
Un. Modifier l'attribut d'identité de la colonne via les outils de gestion SQL
1. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur la table contenant la colonne dont vous souhaitez modifier le type de données, puis cliquez sur Modifier. La table sera ouverte dans le concepteur de table.
2. Décochez la case « Autoriser les valeurs nulles » pour la colonne que vous souhaitez modifier.
3. Dans l'onglet "Propriétés de la colonne", développez la propriété "Spécification d'identification".
4. Cliquez sur la cellule de grille de la sous-propriété « Oui Identité » et sélectionnez « Oui » dans la liste déroulante.
5. Entrez une valeur dans la cellule « Identification Seed ». Cette valeur sera attribuée à la première ligne du tableau. Par défaut, cette valeur sera 1.
6. Tapez une valeur dans la cellule « Incrément d'identification ». Cette valeur est un incrément ligne par ligne basé sur la « graine d'identification ». Par défaut, l'incrément est défini sur 1.
Deux. Instruction SQL à créer
Spécifiez les champs de numérotation automatique lors de la création d'un tableau
CRÉER UNE TABLE [dbo].[UserInfor](
[UserID] [int] IDENTITY(100,2) NOT NULL, --La valeur initiale et l'étape d'incrémentation peuvent être spécifiées ici
[Nom d'utilisateur] [nchar](10) NON NULL, )
Vous pouvez créer une table et définir la propriété « Colonne d'identité » d'une colonne (telle que « ID ») sur « Oui », puis définir sa graine (valeur initiale) et son incrément. Par exemple, si vous définissez la graine sur 1 et l'incrément sur 1 (le paramètre par défaut), la séquence d'ID générée sera : 1, 2, 3, 4,…
Lorsque le nombre d'enregistrements n'est pas particulièrement important (plus de 10 millions), cette valeur est unique, c'est-à-dire que les deux ne seront pas identiques.
Mais il y aura un problème, par exemple, vous générez 10 enregistrements en séquence :
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Ensuite vous supprimez l'enregistrement n°3, les enregistrements restants sont donc :
1, 2, 4, 5, 6, 7, 8, 9, 10
Si vous souhaitez que le nombre augmente progressivement à partir de 1 sans interruption au milieu, vous pouvez définir une autre colonne non identifiante, telle que « numéro ». Lors de l'ajout de nouveaux enregistrements, vous pouvez utiliser les méthodes suivantes :
Dans l'instruction de requête, vous pouvez utiliser l'instruction suivante pour sélectionner la valeur maximale de la colonne numérique du tableau : SELECT @number = MAX(number) FROM tablename
insérer dans les valeurs du nom de la table (numéro) (@numéro+1)
------------------------
Ce qui précède est une démonstration utilisant des instructions SQL, mais il est supposé que vous utilisez des procédures stockées pour faire fonctionner la base de données. Si vous utilisez le langage ASP, vous pouvez procéder comme suit :
psql = "SELECT MAX(number) AS maxnumber FROM tablename"
rs.open psql,conn,3,3
numéromax=rs("numéromax")
Lisez la valeur numérique maximale, puis ajoutez 1, puis utilisez-la dans votre instruction d'ajout de données.
------------------------
De cette façon, vous pouvez générer manuellement le numéro, puis écrire le programme comme ceci lors de la suppression de l'enregistrement :
' Supposons que le numéro d'enregistrement à supprimer soit @n
supprimer le nom de la table où numéro=@n
Mettez à jour l'enregistrement nommé tablename et décrémentez la valeur du champ numérique de 1, mais ne le mettez à jour que lorsque le nombre est supérieur à la valeur du paramètre @n.
Après cela, nous pouvons réorganiser l'ordre de numérotation, supprimer les enregistrements et les renuméroter. De même, je peux également vous montrer une démonstration d'instructions SQL, mais cette fois le code utilisant ASP+SQL n'est plus fourni. Veuillez vous y référer et le comprendre par vous-même.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!