2010-12-10 6 views
0
---------- 
ID NAME 
3 A 
4 B 
5 C 
---------- 

Lorsque je supprime tout enregistrement, il continue après l'enregistrement du numéro cinq, mais je veux qu'il insère le premier index de cette table. Quelqu'un peut-il m'aider?Comment insérer un enregistrement vide dans un tableau

+0

@ InSane, la colonne d'identité est ID, je veux insérer par ordre d'ID (1,2,6,7,8 ...) – ozkank

Répondre

0

Votre colonne ID semble être une colonne IDENTITY - elle ajoute toujours la valeur suivante (indépendamment des suppressions).

La nécessité d'avoir un ID spécifique semble correspondre à la conception de votre application, ce qui n'est pas une bonne pratique. Les champs ID ont des lacunes (ce qui est normal) - votre application ne devrait pas compter sur eux.

Quoiqu'il en soit, voici quelques façons de le faire:

Pour une large, utilisez SET IDENTITY INSERT ON:

SET IDENTITY INSERT dbo.myTable ON 

INSERT INTO myTable 
(ID, NAME) 
VALUES 
(1, 'H') 

SET IDENTITY INSERT dbo.myTable OFF 

Pour réinitialiser l'ensemencement, vous devez utiliser une commande DBCC CHECKIDENT, en utilisant RESEED :

DBCC CHECKIDENT('myTable', RESEED, 0) 
1

Une façon simple serait de

TRUNCATE TABLE mytable; 

au lieu de

DELETE FROM mytable 

De TRUNCATE TABLE (Transact-SQL)

Si la table contient une colonne d'identité, le compteur pour cette colonne est remis à la valeur de départ définie pour la colonne. Si aucune graine n'a été définie, la valeur par défaut 1 est utilisée. Pour conserver le compteur d'identité, utilisez plutôt DELETE.

+0

+1 pour une alternative plus intelligente à l'aide de DELETE + DBCC CHECKINDENT – InSane

0

Je pense que vous voulez redémarrer la valeur de la colonne d'autogénération avec 1 à nouveau? si elle est une colonne d'identité, vous pouvez réinitialiser la valeur de départ avec Teh commande suivante

DBCC CHECKIDENT('YourTableNameHere', RESEED, 0) 
2

Je suppose que vous avez votre colonne ID comme une colonne IDENTITY, et que vous voulez le remettre à recommencer à 1 , après avoir supprimé toutes les lignes de la table. Tout d'abord, je dirais qu'ayant un tel besoin (que la valeur d'ID commence à 1) tend à signifier qu'il y a quelque chose de mal dans ce que vous faites - les colonnes IDENTITY peuvent toujours avoir des trous dans la numérotation, et devraient être traités comme des taches opaques. Le fait qu'ils semblent être des entiers, et ont tendance à être faciles à retenir, ne sont que des détails de mise en œuvre.

Deuxièmement, si vous voulez faire vous utiliseriez DBCC CHECKIDENT


Modifier

une telle remise à zéro, Si vraiment vous ne dépendez sur ces valeurs d'identité (par exemple, parce qu'ils re également utilisé dans une application), c'est un bon indicateur que la colonne ne devrait pas avoir la propriété IDENTITY en premier lieu. Malheureusement, vous ne pouvez pas supprimer directement cette propriété - vous devez créer une copie de la table sans cette propriété, copier toutes les lignes, supprimer la table d'origine et renommer la copie.Management Studio va prétendre que vous pouvez simplement supprimer la propriété, mais fera ce que je viens de décrire dans les coulisses.

0

La fonctionnalité d'ID de base de données est destinée à s'assurer que différents enregistrements n'auront JAMAIS le même ID. Cela n'est pas seulement valable pour les enregistrements existants en même temps, mais également pour les nouveaux enregistrements insérés après la suppression d'un autre enregistrement. Ceci est extrêmement utile pour éviter les conflits. Bien qu'il semble parfois briser le sens du goût de certaines personnes ne fonctionnent pas autour d'elle.

Si vous devez affecter des numéros de votre choix aux enregistrements, ajoutez une autre colonne. Les colonnes auto-indexées doivent être utilisées tout le temps. Les autres utilisateurs vous ont expliqué comment manipuler l'index, mais utilisez cette fonctionnalité avec beaucoup de soin.

Questions connexes