10
votes

Modifier l'incrément de champs Auto_Increment des champs par

Comment modifier le montant auto_incrènement dans l'incrément de MySQL par défaut (1) à n?


3 commentaires

Voulez-vous modifier la valeur suivante utilisée ou l'étape utilisée entre les valeurs (par exemple la valeur de l'étape de 2, utilisez 1, 3, 5, 7 etc.)?


désolé si la question est ambiguë oui correct, je veux que l'auto_incrèce soit effectuée comme indiqué par vous (comme l'identité (1,3) dans SQL Server qui augmente la valeur suivante de 3)


@sansknwoledge - J'ai édité la question de la faire, espérons-le que cela vous demandait ce que vous vouliez dire!


4 Réponses :


3
votes

Vous pouvez le changer en utilisant alter Table < / code> : xxx

ou si vous souhaitez le définir à partir du démarrage: xxx


2 commentaires

Je ne Cela fait ce qu'il veut (il répond à la question qu'il pose dans le corps de sa question, mais pas la question dans le titre). La question est définitivement ambiguë cependant.


Oui, cela ne fait pas ce qu'il essaie de faire (j'ai maintenant édité la question de la rendre plus claire).



7
votes

Si vous souhaitez modifier l'étape d'autocrampe de 1 à N, il y a une solution. Cela pourrait être fait sur le côté serveur MySQL: Recherchez une option de démarrage '-Auto-Ingrement-Incrément' ou d'utiliser la commande suivante SET @@O_INCREMENT_INCREMENT = 2; , mais soyez averti qu'il s'agit d'un changement de serveur (toutes les tables d'incrémenteront par 2) .

Les solutions non entraînées pourraient être envisagées:

  1. Lancez deux serveurs MySQL sur la même machine, avec des ports différents (un avec auto_incrènement_incrètent = 1 Autre avec auto_incrènement_incrènement = 2 )
  2. Utilisez une magie Serverside (PHP, ASP, ???) combinée à la mise hors tension des tables auto_incrènement pour calculer manuellement (Simple Peek au dernier identifiant et + = 2 serait OK) et fournirait une pièce d'identité Insérer Query.

    FAQ officiel MySQL


4 commentaires

Bonjour, j'ai vérifié la FAQ que je suis un peu confus [vous pouvez définir chaque serveur pour générer des valeurs d'incrémentation automatique qui ne sont pas en conflit avec d'autres serveurs. La valeur de --auto-incrément-incrément devrait être supérieure au nombre de serveurs (à partir de cette page)] un organisme pourrait-il expliquer cela?


L'idée est la suivante: serveurs = {db1, db2, db3}; db01: {- auto-incrément-décalset = 0; - incrément automatique-incrément = 3}; dB02: {- incrétation automatique du décalage = 1; - auto-extrémité-incrément = 3}; db03: {- Auto-Inc Rement-décalset = 2; - AU TO-INTRAMENT-INCREMENT-INCREME NT = 3}; Donc, DB1 génère uniquement des identifiants où (n% 3) == 0, pour DB2 (n% 3) == 1, pour DB3 (n% 3) == 2; I.e. DB1: "3,6,9, ..." DB2: "1,4,7, ..." DB3: "2,5,8" -> Pas de conflit d'identification


@Piskvor Merci pour la clarification, mais si je dispose de plus d'une table dans mon dB tout avec des colonnes autogénéraires et je ne veux qu'une seule table d'incrémenter des étapes de Say 2 et de reposer suivez 3 Que dois-je faire?


Y a-t-il un moyen de faire cette incrémente par étape pour seulement une seule table.



-3
votes
alter table <table name>  auto_increment=n
where n is the number you want to start

2 commentaires

Cela ne réglait pas l'étape, il ajuste la valeur de début.


Ceci n'est que la valeur de début



-2
votes

Vous pouvez également utiliser Alter séquence séquence_name incrément de n où n est la nouvelle valeur incompynifique.


0 commentaires