Insérer MySQL dans plusieurs tables : normalisation de la base de données
L'insertion de données dans plusieurs tables simultanément dans MySQL n'est pas directement prise en charge. Cependant, il existe d'autres approches pour obtenir cette fonctionnalité.
Utiliser des transactions
Pour garantir la cohérence des données entre les tables, il est recommandé d'utiliser des transactions. Les transactions encapsulent une série de requêtes dans une seule unité, garantissant que toutes les requêtes réussissent ou échouent ensemble.
Voici un exemple utilisant des transactions :
BEGIN; INSERT INTO users (username, password) VALUES('test', 'test'); INSERT INTO profiles (userid, bio, homepage) VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com'); COMMIT;
Récupération de la valeur d'incrémentation automatique
Pour insérer l'identifiant d'incrémentation automatique de la table des utilisateurs dans la table des profils, vous pouvez utiliser la fonction LAST_INSERT_ID() . Cependant, si l'instruction d'insertion suivante est insérée dans une table avec sa propre colonne d'incrémentation automatique, la valeur LAST_INSERT_ID() sera mise à jour avec la valeur de cette table.
Pour conserver la valeur LAST_INSERT_ID() d'origine, vous pouvez stocker dans une variable personnalisée au sein de la transaction.
Utilisation des variables MySQL :
INSERT ... SELECT LAST_INSERT_ID() INTO @mysql_variable_here; INSERT INTO table2 (@mysql_variable_here, ...);
Utilisation de variables de langage :
// PHP example $mysqli->query("INSERT INTO table1 ..."); $userid = $mysqli->insert_id; $mysqli->query("INSERT INTO table2 ($userid, ...)");
Attention
Il est important de prendre en compte la cohérence de la base de données lors de l'insertion dans plusieurs tableaux. En cas d'interruption, les transactions garantissent que toutes les requêtes sont exécutées entièrement ou pas du tout. Sans transactions, les insertions partielles peuvent entraîner des incohérences.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3