Problème avec Replace [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 13-06-2005 à 12:55:29
a mon avis plutot un pb de clef
verifie que ronum est bien une clef primaire , et pas un index
( mais bon si il est en auto increment , normalement c al clé )
Marsh Posté le 13-06-2005 à 13:32:04
bon bah j'ai redemarré tout le PC, BBD + serveur + client et pour l'instant ca à l'air "normal" mais bon ... cette histoire m'intrigue Oo
et ronum est bien clé primaire, je l'ai même enlevé puis remis, si ca persiste, je supprimerai carrèment le champs pour le recrée ...
Marsh Posté le 14-06-2005 à 10:02:23
Mon soucis venait d'une autre requête qui n'affichait pas ce que je demandais.
Quand à l'histoire :
"Nombre d'enregistrements insérés : 2"
Ca reste un mystère vu qu'une seule de ces deux lignes apparait en BDD ...
Marsh Posté le 14-06-2005 à 10:19:53
ce qui est totu a fait normal si tu utilise mysql_affected_rows
Citation : Note that when you use a REPLACE command, mysql_affected_rows() returns 2 if the new row replaced an old row. This is because in this case one row was inserted after the duplicate was deleted. |
http://dev.mysql.com/doc/mysql/en/ [...] -rows.html
Marsh Posté le 12-07-2005 à 11:45:42
j'ai encore une question en fait sur replace.
J'ai cru comprendre que lorsque l'enregistrement existait, il était simplement mis à jour.
Hors dans mon cas, comme l'expliques très bien flo850, mon enregistrement est systèmatiquement supprimé puis recrée.
Donc si ma requête Replace ne renseigne que 3 champs sur 10 dont la clé primaire, je me retrouve avec 7 champs non renseignés (valeurs par défaut) alors qu'ils pouvaientt très bien être initialisés avant .
J'ai loupé un option pour forcer un update au lieu d'un delete + insert en cas d'existence de la clé primaire ?
Marsh Posté le 13-06-2005 à 12:26:56
Voici ma requête :
replace rosier (ronum,rovar,roctr,ropgf,rocam,ropal,roqte) values (8,'B743000','XXX','L','C001',34,60)
Structure de ma table :
Champ Type
ronum int(11)
rovar varchar(20)
roctr varchar(10)
ropgf char(3)
rocam varchar(4)
ropal int(11)
roqte int(10)
Nom de la clé Type Cardinalité Champ
PRIMARY PRIMARY 1 ronum (autoincrement)
Mon soucis, si l'enregistrement n'existe pas il est crée. C'est normal.
Si il existe, une ligne est mise à jour et une autre est crée !
deux lignes identiques sont crées avec la même clé primaire apparement!
Comment est-ce possible ?
:x.
Bug ?