Champs identique dans la même table MySQL-PHP
Fermé
le_joker_fou
Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
-
14 sept. 2010 à 13:38
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 15 sept. 2010 à 12:14
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 15 sept. 2010 à 12:14
A voir également:
- Champs identique dans la même table MySQL-PHP
- Table ascii - Guide
- Table des matières word - Guide
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Pour ce faire la taille des cellules fusionnées doit être identique ✓ - Forum Excel
1 réponse
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
15 sept. 2010 à 12:14
15 sept. 2010 à 12:14
Bonjour,
Je ne sais pas si cela marcherait sous MySQL, et d'ailleurs cela dépend vraisemblablement du moteur utilisé pour tes tables.
Mais sous SQL Server, je définirais tout simplement la nouvelle colonne de cette façon :
ALTER TABLE commande
ADD COLUMN id BIGINT DEFAULT id_comm
Ainsi, par défaut, la valeur de id est la même que celle de id_comm.
Il suffit donc de ne jamais spécifier le id que tu insères pour que la valeur par défaut soit utilisée. En plus, ça t'économises d'aller modifier toutes tes requêtes d'insertion ;)
Sinon, si cela ne fonctionnait pas, tu peux faire les choses en deux temps :
mysql_query("ta requête habituelle, sans id");
$nv_id = mysql_insert_id(); // Donne le dernier id auto incrémenté de la session en cours
mysql_query("UPDATE commande SET id=$nv_id WHERE id_comm=$nv_id");
Problème de cette deuxième méthode, je ne sais pas comment c'est géré s'il y a de nombreuses insertions simultanées dans ta base...
Xavier
PS : tiens, autre méthode si ton système fonctionne par batches, tu peux tout simplement décider de tout réaligner à intervalles réguliers :
UPDATE commande SET id=id_comm WHERE id IS NULL
Je ne sais pas si cela marcherait sous MySQL, et d'ailleurs cela dépend vraisemblablement du moteur utilisé pour tes tables.
Mais sous SQL Server, je définirais tout simplement la nouvelle colonne de cette façon :
ALTER TABLE commande
ADD COLUMN id BIGINT DEFAULT id_comm
Ainsi, par défaut, la valeur de id est la même que celle de id_comm.
Il suffit donc de ne jamais spécifier le id que tu insères pour que la valeur par défaut soit utilisée. En plus, ça t'économises d'aller modifier toutes tes requêtes d'insertion ;)
Sinon, si cela ne fonctionnait pas, tu peux faire les choses en deux temps :
mysql_query("ta requête habituelle, sans id");
$nv_id = mysql_insert_id(); // Donne le dernier id auto incrémenté de la session en cours
mysql_query("UPDATE commande SET id=$nv_id WHERE id_comm=$nv_id");
Problème de cette deuxième méthode, je ne sais pas comment c'est géré s'il y a de nombreuses insertions simultanées dans ta base...
Xavier
PS : tiens, autre méthode si ton système fonctionne par batches, tu peux tout simplement décider de tout réaligner à intervalles réguliers :
UPDATE commande SET id=id_comm WHERE id IS NULL