MYSQL: Comment créer une nouvelle ligne et obtenir le nouvel identifiant sans insérer de données?
Normalement je obtenir un nouveau code en insérant des données et crée une nouvelle ligne et renvoie la nouvelle carte d'identité. Mais si je ne veux pas d'insérer toutes les données que je veux juste créer une nouvelle ligne avec un nouveau numéro d'identification et d'obtenir la nouvelle carte d'identité...comment puis-je le faire?
Grâce.
Mise à JOUR:
OK, Voici mon problème. Le tableau que je voulais faire ce seulement a la 1 colonne ID.
Pourquoi?
Je vais vous expliquer (je vais essayer).
J'ai un autre tableau où chaque ligne a sa propre identité variation_id (auto-inc), mais chaque ligne doit être liée à un groupe d'autres lignes de la même table. J'ai une autre colonne appelée group_id je ne peux pas faire l'auto-inc, car il doit apparaître plusieurs fois, il sa ce dit de laquelle les variations devraient être regroupés. Donc, je voulais avoir une deuxième table avec group_id en tant que clé primaire et de l'auto-inc afin que je puisse l'utiliser pour générer la nouvelle group_id chaque fois que j'ai besoin d'un nouveau groupe. Je suppose que je vais sur ce dans le mauvais sens....alors que dois-je faire?
source d'informationauteur JD Isaacks
Vous devez vous connecter pour publier un commentaire.
voici un exemple:
ensuite, vous pouvez "nourrir" votre table avec:
Vérifier ce violon: http://sqlfiddle.com/#!2/6b19c/1
Espère que cela aide!
Тарас Лукавий avez une autre question, et voici la réponse:
alors vous "nourrir" de données avec:
Maintenant, nous allons vérifier:
Vous verrez chaque ligne avec l'identification automatique et d'horodatage.
Vérifier ce violon: http://sqlfiddle.com/#!2/9a344/2
Espère que cela aide!
Tous vos colonnes devrait être nullable, et vous aurez à insérer la valeur null pour tous les autres colonnes, mais ID.
Cant vous venez de passer les valeurs null, ou suis-je pas compris la question? La requête est ensuite devenu:
Si vos tables de ne pas accepter les valeurs null, ils pourraient être mis en place avec une valeur par défaut, qui vous rend capable de faire la requête suivante:
Par défaut est un mot-clé qui indique explicitement la valeur par défaut pour une colonne. MySQL permet de spécifier un vide liste de valeurs si toutes les colonnes ont une valeur par défaut définie: insérer dans les valeurs de D()
Edit: étant donné que les autres réponses arrivent et aucun n'a mentionné le mot clé default Id comme pour montrer comment créer des tableaux avec des valeurs par défaut. Il va comme ceci:
Maintenant, si vous voulez vous pouvez insérer la valeur par défaut de l'ID en ne faisant que:
SHOW CREATE TABLE
vous montrera les internes de type auto_increment de la valeur qui sera attribuée à la prochaine ligne. Notez que vous devez pas utiliser cette valeur dans des énoncés suivants, car la valeur peut changer par une autre opération d'insertion de la microseconde vous recevoir. Vous pouvez plutôt utiliserLAST_INSERT_ID()
dans d'autres requêtes, si cela convient à vos besoins -LAST_INSERT_ID()
vous donnera le dernier id inséré à l'intérieur de cette session (=connexion), de sorte qu'il est sûr de se fonder sur cette valeur.Modifier après la clarification de la question:
Vous devez créer des tableaux qui reflètent cette logique et de leur donner des noms propres. Créer une table appelée groupes (ou quelque chose de mieux adapté en fonction de votre demande) et insérer une nouvelle entrée à chaque fois que vous voulez générer un groupe. Vous pouvez affecter des valeurs à ce groupe par le biais de sa
LAST_INSERT_ID()
. Précalculer auto_increment valeurs est très dangereux et finira par conduire à dupliquer les id de groupe - qui peut être quelque chose de très ennuyeux mortel - en fonction de ce que votre demande est en train de faire.Besoin de plus de détails pour répondre mais, si toutes les colonnes dans le tableau sont les valeurs null, alors vous pouvez simplement insérer une ligne vide et revenir à l'auto-ID généré.
Alors besoin d'avoir un tableau de mise en page avec accepte la valeur null pour chaque colonne et il suffit d'insérer les valeurs null.
Si juste besoin de l'id, verrouiller la table, select max(id) from table et ajouter 1.Utiliser les informations et les consommer de la nouvelle ligne et libérer le verrou.