Dans MySQL, il y a deux instructions pour faire plus ou moins la même chose selon les cas :
INSERT IGNORE va faire exactement INSERT ON CONFLIT DO NOTHING, c'est à dire que tu fais un INSERT, et si ça rate, tant pis.
Particulièrement utile lors d'INSERT multiples, ça ajoute tout ce que ça peut ajouter sans planter.
Et aussi le REPLACE, qui fait un DELETE si l'INSERT est impossible, puis qui fait l'INSERT.
Le cas non géré est l'intermédiaire, où va mettre à jour si la ligne existe et la créer sinon.
Utile pour des cas particuliers où l'INSERT se fait avec des colonnes non définies, donc à la valeur par défaut, mais si la ligne existe et que ces valeurs ont été modifiées, on ne les change pas, on met juste à jour certaines colonnes. Je n'ai pas spécialement d'exemple à proposer...
Dans l'exemple donné avec les totoz, on doit pouvoir s'en sortir avec de l'INSERT IGNORE et du REPLACE.
Maintenant, je ne sais pas trop où se situe la norme SQL entre les IGNORE, les ON CONFLICT etc..
# MySQL : INSERT IGNORE ou REPLACE
Posté par Yth (Mastodon) . En réponse au journal UPSERT dans PostgreSQL ça déchire. Évalué à 8.
Dans MySQL, il y a deux instructions pour faire plus ou moins la même chose selon les cas :
INSERT IGNORE va faire exactement INSERT ON CONFLIT DO NOTHING, c'est à dire que tu fais un INSERT, et si ça rate, tant pis.
Particulièrement utile lors d'INSERT multiples, ça ajoute tout ce que ça peut ajouter sans planter.
Et aussi le REPLACE, qui fait un DELETE si l'INSERT est impossible, puis qui fait l'INSERT.
Le cas non géré est l'intermédiaire, où va mettre à jour si la ligne existe et la créer sinon.
Utile pour des cas particuliers où l'INSERT se fait avec des colonnes non définies, donc à la valeur par défaut, mais si la ligne existe et que ces valeurs ont été modifiées, on ne les change pas, on met juste à jour certaines colonnes. Je n'ai pas spécialement d'exemple à proposer...
Dans l'exemple donné avec les totoz, on doit pouvoir s'en sortir avec de l'INSERT IGNORE et du REPLACE.
Maintenant, je ne sais pas trop où se situe la norme SQL entre les IGNORE, les ON CONFLICT etc..
Yth.