Question qui doit êter facile à répondre.. j'espère - SQL/NoSQL - Programmation
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... |
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 ?
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)
Marsh Posté le 11-03-2003 à 17:50:15
antp a écrit : |
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 !
Marsh Posté le 11-03-2003 à 17:52:15
antp a écrit : |
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
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!
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
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 Enfin je me souviens que j'avais eu des problèmes avec ce truc.
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
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! |
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.
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