Question qui doit êter facile à répondre.. j'espère

Question qui doit êter facile à répondre.. j'espère - SQL/NoSQL - Programmation

Marsh Posté le 11-03-2003 à 17:26:23    

Très simple... Comment on fait pour réinitialiser un champs auto-increment dans Access et Mysql? Sans défaire et refaire la table...
 
Merci

Reply

Marsh Posté le 11-03-2003 à 17:26:23   

Reply

Marsh Posté le 11-03-2003 à 17:35:06    

Elphin a écrit :

Très simple... Comment on fait pour réinitialiser un champs auto-increment dans Access et Mysql? Sans défaire et refaire la table...
 
Merci


Ben sur MySQL il se réinitialise tout seul quand la table est vide de toute façon. Le principe est de prendre à chaque fois le max + 1. Je vois pas trop ce que tu veux en fait ?

Reply

Marsh Posté le 11-03-2003 à 17:46:20    

tomlameche a écrit :

Le principe est de prendre à chaque fois le max + 1.  


 
c'est pas le cas de tous les SGBD
Access par ex c'est dernier ajouté + 1, même si le dernier ajouté n'existe plus...
Je crois que MS SQL Server fait de même (et on ne peut pas forcer la valeur du champ, contrairement à MySQL)


Message édité par antp le 11-03-2003 à 17:47:10

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-03-2003 à 17:50:15    

antp a écrit :


 
c'est pas le cas de tous les SGBD
Access par ex c'est dernier ajouté + 1, même si le dernier ajouté n'existe plus...
Je crois que MS SQL Server fait de même (et on ne peut pas forcer la valeur du champ, contrairement à MySQL)


Ah oui, mais là je me bornai à MySQL. En fait, je pense que le meilleurs des principes est celui d'Oracle : tu te débrouille comme tu veux avec des séquences, voir des trigger pour les plus dingues, mais aucun champ ne se calcul tout seul. Au moins là, tu reste maitre de tes enregistrements !

Reply

Marsh Posté le 11-03-2003 à 17:52:15    

antp a écrit :


 
c'est pas le cas de tous les SGBD
Access par ex c'est dernier ajouté + 1, même si le dernier ajouté n'existe plus...
Je crois que MS SQL Server fait de même (et on ne peut pas forcer la valeur du champ, contrairement à MySQL)


 
on peut raisonablement espérer que MS SQL serveur utilise un trigger et une séquence. Donc c'est la séquence qu'il faut réinitialiser

Reply

Marsh Posté le 15-03-2003 à 01:29:55    

Donc donc sous access.. le plus simple et bien de détruire et refaire la table... c poche! :D

Reply

Marsh Posté le 15-03-2003 à 01:38:19    

faux on peut forcer l'insertion de clé auto increment dans MS SQL
 
SET IDENTITY_INSERT _table_ ON


Message édité par HappyHarry le 15-03-2003 à 01:38:50
Reply

Marsh Posté le 15-03-2003 à 10:01:38    

Ouais mais il me semble que ça ne marchait pas si la table n'était pas vide [:figti] Enfin je me souviens que j'avais eu des problèmes  avec ce truc.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-03-2003 à 13:59:50    

Non non, on peut bien en effet forcer la valeur d'un auto-incrément dans MSSQL.
 
Par contre, il utilise une séquence "invisible", c'est à dire que chaque nouvel ID sera plus grand que celui précédement généré (et non inserré), et si on droppe tout, ça ne sera pas réinitialisé.
 
Le seul moyen de réinitialiser un auto_incrément sous MSSQL, c'est de faire un alter sur la table pour virer l'auto-incrément, puis refaire un alter pour le remettre. Mais il faut mieu mettre la base down pendant ce temps, parceque sinon ca va faire proutch :)

Reply

Marsh Posté le 15-03-2003 à 14:16:01    

Elphin a écrit :

Donc donc sous access.. le plus simple et bien de détruire et refaire la table... c poche! :D


Sous Access tu fais un compactage et l'auto-increment est réinitialisé à la valeur la plus basse possible: donc si la table en question est vide, ce sera zéro.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed