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 des approches alternatives pour obtenir cette fonctionnalité.
Utilisation 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 l'incrémentation automatique Valeur
Pour insérer l'identifiant d'incrémentation automatique de la table des utilisateurs dans la table des profils, vous pouvez utiliser le 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 de MySQL Variables :
INSERT ... SELECT LAST_INSERT_ID() INTO @mysql_variable_here; INSERT INTO table2 (@mysql_variable_here, ...);
Utilisation des 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 Tenez compte de la cohérence de la base de données lors de l'insertion dans plusieurs tables. En cas d'interruption, les transactions garantissent que toutes les requêtes sont exécutées entièrement ou pas du tout. Sans transactions, des insertions partielles peuvent entraîner des incohérences.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!