0
votes

MySQL Insérer avec cet identifiant d'incrément

J'ai une table , qui contient ID , log_string et créé_at .

DDL Pour journaux : xxx

log_string colonne est par Concat ID et et créé_at et une chaîne, et je le fais en faisant deux fois insert: xxx

pourrait-il faire cela en faisant simplement insérer une fois?

Il y a un last_insert_id () dans mysql mais non this_insert_id () , une idée?


4 Réponses :


0
votes

Vous souhaitez prendre le prochain ID d'insertion et l'horodatage lorsque la prochaine entrée de journal sera créée (créée_at). Ainsi, en d'autres termes, vous voulez avoir des entrées futures :)

Donc, non, ce n'est pas possible. Vous pouvez le prédire en regardant ce que l'ID actuel est et l'incrémentez-la par vous-même parce que c'est ce qui va être le prochain identifiant de journal probablement. Mais cette approche est très découragée car si vous gérez cette logique de table dans plusieurs endroits, vous ne savez jamais ce qui va être l'identifiant suivant autant de scripts changera le tableau sur les différents intervalles de temps. < P> Donc non, il n'y a aucun moyen de le faire dans une requête. Cependant, vous pouvez écrire un cron qui remplit la colonne log_string une fois par jour ou d'une manière similaire: xxx

Je n'ai pas testé la requête, C'est juste pour vous donner une idée.

De cette façon, vous n'avez pas besoin d'exécuter une requête supplémentaire à chaque fois. Vous venez de le faire, une fois par jour ou donc pour un groupe d'entrées.

J'espère que cela aide


0 commentaires

0
votes

Il y a quelques façons de réaliser ce que vous voulez, mais ce n'est pas possible de manière pratique. Mais plus important encore, ce n'est pas nécessaire car vous avez déjà une pièce d'identité dans votre table.

Vous pouvez le formater via sprintf code> lorsque vous imprimez le journal. P>

sprintf('This is log %s (%s)', $id, $date);


0 commentaires

0
votes

Si votre identifiant est incrémentation automatique, il serait impossible d'atteindre ce que vous voulez sans au moins deux demandes.


Cependant, il serait intéressé si vous ajoutez un attribut personnalisé > À votre modèle et supprimer Log_string à partir de la table:

Mettez à jour votre table

Supprimer log_string colonne xxx

Mettez à jour votre modèle

Ajoutez l'attribut Custorm à app \ log.php xxx

Accès aux données xxx


0 commentaires

0
votes

Vous pouvez utiliser le "Observer"

Quelque chose comme ça: < / p>

xxx


0 commentaires