9
votes

MySQL sur la clé en double insère dans une table d'audit ou de journal

Y a-t-il un moyen d'accomplir cela? XXX

Je ne veux vraiment pas utiliser php pour cela: (

Merci!


1 commentaires

Je suppose que "non", à moins que vous n'utilisiez une procédure stockée pour effectuer cette logique.


3 Réponses :


0
votes

sur la touche en double est utilisé pour mettre à jour la ligne, non pour insérer dans une autre table, vous devez utiliser deux questions selon le résultat du premier.

Edit: Vous pouvez utiliser un déclencheur trop


3 commentaires

"Vous devez utiliser deux questions selon le résultat du premier." Pouvez-vous expliquer un peu plus loin ou me donner un exemple de cela ?? Merci beaucoup!


Vous avez oublié que vous devriez utiliser php ^^ 'utiliser un déclencheur ou essayer la solution de Daniel.


Merci pour vos réponses Tapis;)



11
votes

Si vous souhaitez envisager d'utiliser une procédure stockée, vous pouvez utiliser un déclarer le gestionnaire de suite code> . Voici un exemple: xxx pré>

Ajoutons quelques données, essayant d'insérer une clé en double: p> xxx pré>

résultat: p>

SELECT * FROM users;
+----------+------------+-----------+
| username | first_name | last_name |
+----------+------------+-----------+
| userA    | Bob        | Smith     |
| userB    | Paul       | Green     |
+----------+------------+-----------+
2 rows in set (0.00 sec)

SELECT * FROM audit_table;
+---------------------+-----------------------+
| timestamp           | description           |
+---------------------+-----------------------+
| 2010-10-07 20:17:35 | Duplicate key ignored |
+---------------------+-----------------------+
1 row in set (0.00 sec)


3 commentaires

Une procédure ou une gâchette stockée (comme Matthecat proposé) résoudra ce problème, mais la plupart des fournisseurs d'hébergement n'accepteront pas SP ou des déclencheurs sur leurs serveurs, ne savent pas pourquoi, je suppose qu'une sorte de problème de sécurité.


@RICARDOCASAREES: Je traiterais cela comme une occasion de changer de fournisseur d'hébergement :)


Merci beaucoup Daniel !! Je vais envisager de changer d'hébergement;) Et merci beaucoup pour ce grand exemple!



0
votes

Vous ne savez pas si cela fonctionnerait mais examinez si la déclaration de MySQL

pseudo-code xxx


0 commentaires