Comment créer deux auto incrémentée dans mysql?
CREATE TRIGGER test1 AFTER INSERT ON `course_metadata_31`
FOR EACH ROW BEGIN
update `course_metadata_31`set `articleID`=`articleID`+1
END;
Je suis à l'aide de cette approche. Quand je vais insérer une nouvelle entrée dans course_metadata_31 il doit incrémenter articleID trop. Parce que je veux articleID comme une nouvelle auto-incrémentée. que dois-je faire?
- Vous ne pouvez pas avoir deux colonnes à incrémentation automatique. Vous pouvez utiliser un déclencheur, mais pourquoi? Ne sera pas une auto-incrémentée être assez?
- Ouais je suis à l'aide de la gâchette. Comme écrit ci-dessus, mais il affiche l'erreur
- J'ai besoin de deux incrément automatique des colonnes
- Non ce n'est pas le cas, puisque les données sont essentiellement les mêmes. Vous devriez être plus clair sur ce que vous essayez d'atteindre.
Vous devez vous connecter pour publier un commentaire.
Aucune idée de pourquoi vous avez besoin de deux colonnes de l'auto incrémentation des valeurs, il n'y a pas de point... mais si vous insistez -
Vous pouvez l'accomplir dans un fichier UDF ou SP de cette façon, vous avez plusieurs colonnes auto incrémentation d'une valeur.
EXEMPLE #1: PROCÉDURE STOCKÉE (SP)
Table
Procédure Stockée
Appel de la SP
Regardez en haut de la table
EXEMPLE #2: FONCTION DÉFINIE PAR L'UTILISATEUR (UDF)
Table
Fonction définie par l'utilisateur
Insérer à l'aide de l'UDF
Regardez en haut de la table
Ils ont été testés et vérifiés. Je serais personnellement utiliser la fonction, il est plus souple.
Si vous avez deux colonnes auto_increment elles doivent être les mêmes, de sorte qu'il est inutile d'avoir deux colonnes auto_increment.
Q: Que dois-je faire?
Un: Examiner les raisons que vous pensez que vous avez besoin d'un deuxième colonnes AUTO_INCREMENT, examiner attentivement ce que c'est que vous essayez d'atteindre.
Venir avec une autre conception qui ne vous obligent pas à ajouter deux
AUTO_INCREMENT
colonnes d'une table MySQL.Si vous ne vraiment besoin d'avoir une deuxième colonne avec "auto increment" type de comportement, une façon de faire qui consiste à ajouter un deuxième mannequin table avec une colonne de type auto_increment, et AVANT d'utiliser un déclencheur d'INSERTION pour faire une insertion dans la table factice, et de récupérer la valeur de l'id qui a été inséré.
Quelque chose comme ceci:
NOTE
Vous ne serait pas nécessairement à supprimer les lignes de la table factice, vous n'auriez pas à faire la queue de détente, mais il ne sert à rien de les garder. Vous seriez probablement vraiment besoin de garder la ligne qui a la plus grande valeur auto_increment, tout comme une prévention contre l'AUTO_INCREMENT de par inadvertance à être plus faible avec une instruction ALTER TABLE.)
La
IF ELSE
dans la détente du corps est conçu pour émuler auto_increment comportement... si une valeur est fournie pour article_id, utilisez-le, ET si il est plus grand que la valeur max de la colonne de type auto_increment dans la table factice, mise à jour de cette ligne dans la table factice à avoir la valeur la plus grande (donc la prochaine insertion qui a besoin d'un auto_increment de la valeur de la prochaine valeur la plus élevée).dans le phpMyAdmin, définissez la propriété de la colonne à l'IA de ses une case à cocher sur la structure de la table. vous n'avez même pas besoin de passer les détails de la base de données