Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Verif doublon dans colonne de table mémoire

7 réponses
Avatar
Roumégou Eric
Bonjour,

voici mon pb.
J'ai développé un module d'intégration de fichiers excel basé sur des
descriptions XML.
Mes données sont chargées dans une table mémoire selon ces
descriptions, Puis en intégration, je vais générer des ordres insert
(en bulk) ou update que je déclencherai après avoir relu ma table
mémoire.

ça marche comme je veux mais il y a juste un truc que je voudrais
contrôler. Si un drole s'avise de me créer dans un meme fichier deux
lignes avec un meme identifiant, je vais être dans la situation d'un
plantage sur clé en double.

Ma question est très simple :
de quelle façon puis je m'assurer dans une colonne de table mémoire
qu'il n'y ait pas deux fois la mème valeur ?

tabletrie puis verif rupture, lire et stocker dans une zone mémoire ...
tout ça me semble un peu lourd et long. N'y aurait-il pas une
instruction magique ?

Merci de vos réponses.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)

7 réponses

Avatar
Gilles
Dans son message précédent, Roumégou Eric a écrit :
Bonjour,

Ma question est très simple :
de quelle façon puis je m'assurer dans une colonne de table mémoire qu'il n'y
ait pas deux fois la mème valeur ?

tabletrie puis verif rupture, lire et stocker dans une zone mémoire ... tout
ça me semble un peu lourd et long. N'y aurait-il pas une instruction magique
?



Heuuu? Tablecherche?? Ou alors j'ai pas compris le besoin ;)
(Mais ça m'étonne que tu ne connaisses pas ça, donc je dois mal
comprendre le besoin ;) )
Avatar
Firetox
bonjour,

mettre replace a la place d'insert dans ton bulk
et tu n'auras pas de doublon

replace = insert des nouveaux , update des anciens
et si le fichier est vide en destination comme insert mais sans doublon

bon deb
@+


"Roumégou Eric" a écrit dans le message de
news:
Bonjour,

voici mon pb.
J'ai développé un module d'intégration de fichiers excel basé sur des
descriptions XML.
Mes données sont chargées dans une table mémoire selon ces descriptions,
Puis en intégration, je vais générer des ordres insert (en bulk) ou update
que je déclencherai après avoir relu ma table mémoire.

ça marche comme je veux mais il y a juste un truc que je voudrais
contrôler. Si un drole s'avise de me créer dans un meme fichier deux
lignes avec un meme identifiant, je vais être dans la situation d'un
plantage sur clé en double.

Ma question est très simple :
de quelle façon puis je m'assurer dans une colonne de table mémoire qu'il
n'y ait pas deux fois la mème valeur ?

tabletrie puis verif rupture, lire et stocker dans une zone mémoire ...
tout ça me semble un peu lourd et long. N'y aurait-il pas une instruction
magique ?

Merci de vos réponses.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)


Avatar
Gilles
Dans son message précédent, Firetox a écrit :
bonjour,

mettre replace a la place d'insert dans ton bulk
et tu n'auras pas de doublon

replace = insert des nouveaux , update des anciens
et si le fichier est vide en destination comme insert mais sans doublon



J'utiliserai pas replace dans un cas pareil...
S'il y a deux lignes dans le fichier, il y en a une des deux qui est
bonne... écraser arbitrairement avec une des deux valeurs,
fonctionnellement...

En outre, replace faisant un delete/insert et pas un update, les effets
ne sont pas mineurs sur les logs.

A utiliser avec parcimonie. Ca ne devrait pas être utilisé comme
paliatif à une erreur dans un fichier en entrée.

Ce n'est qu'un avis personnel ;)
Avatar
Firetox
BOnjour,

prenons un exemple

je fait les insert si j'ai un doublon je ne met qu'une ligne (sinon cela
revien a tester tout le fichier sur toutes le colonne pour determiner si
l'enreg est bon ou non).
comme erci fait des insert je suppose que le fichier destination est vide
sinon ily aurais un mecaniseme qui verifierais si'il faut faire un update
(peut etre est ce le cas)

donc suivant ce cas et l'algo de la fonction REPLACE : elle conveint
parfaitement

1. Insertion de la ligne dans la table
2. Si une erreur de clé dupliqué ou de clé unique ou de clé primaire
survient :
1.Annuler les changements de clés
2 Delete de la ligne dans la table correspondante
3.Essayer à nouveau d'insérer la clé primaire et unique dans la
table

mais effectivement j'utilise ce mecanisme sur des inserts sur une table vide
en fonction soit d'un select soit d'un fichier mais je ne doit pas m'arreter
au doublon et si doublon il y a les 2 lignes sont correctes mais identiques
donc aucun souci avec le REPLACE

tout depend de la finalite

sinon il faut le faire au moment du chargement de la table memoire (savoir
s'il ya un doublon avec tableCherche et savoir si la ligne en doublon est
bonne ou non (peut etre que c'etait la premiere qui n'etait pas bonne)

Bon dev
@+


"Gilles" a écrit dans le message de
news:4b92069e$0$24284$
Dans son message précédent, Firetox a écrit :
bonjour,

mettre replace a la place d'insert dans ton bulk
et tu n'auras pas de doublon

replace = insert des nouveaux , update des anciens
et si le fichier est vide en destination comme insert mais sans doublon



J'utiliserai pas replace dans un cas pareil...
S'il y a deux lignes dans le fichier, il y en a une des deux qui est
bonne... écraser arbitrairement avec une des deux valeurs,
fonctionnellement...

En outre, replace faisant un delete/insert et pas un update, les effets ne
sont pas mineurs sur les logs.

A utiliser avec parcimonie. Ca ne devrait pas être utilisé comme paliatif
à une erreur dans un fichier en entrée.

Ce n'est qu'un avis personnel ;)


Avatar
JeAn-PhI
Roumégou Eric a exposé le 05/03/2010 :
Bonjour,

voici mon pb.
J'ai développé un module d'intégration de fichiers excel basé sur des
descriptions XML.
Mes données sont chargées dans une table mémoire selon ces descriptions, Puis
en intégration, je vais générer des ordres insert (en bulk) ou update que je
déclencherai après avoir relu ma table mémoire.

ça marche comme je veux mais il y a juste un truc que je voudrais contrôler.
Si un drole s'avise de me créer dans un meme fichier deux lignes avec un meme
identifiant, je vais être dans la situation d'un plantage sur clé en double.

Ma question est très simple :
de quelle façon puis je m'assurer dans une colonne de table mémoire qu'il n'y
ait pas deux fois la mème valeur ?

tabletrie puis verif rupture, lire et stocker dans une zone mémoire ... tout
ça me semble un peu lourd et long. N'y aurait-il pas une instruction magique
?

Merci de vos réponses.



lors du chargement de la table mémoire pourquoi ne pas stocker les id
dans un tableau avant l'ajout dans la table mémoire et finalement
n'ajouter dans la table mémoire que les id sans doublons

--
Cordialement JeAn-PhI
Avatar
Roumégou Eric
Firetox a exposé le 05/03/2010 :
bonjour,

mettre replace a la place d'insert dans ton bulk
et tu n'auras pas de doublon

replace = insert des nouveaux , update des anciens
et si le fichier est vide en destination comme insert mais sans doublon

bon deb
@+



Merci de vos réponses à tous.

oui ce peut être une solution.

Mais est-ce que cela marche en mysql 4.22 ?
N'est ce pas plus pénalisant qu'un insert ?
Cela marche en bulk ?

En fait je veux contrôler qq chose qui n'est pas sensé arriver, mais je
ne voudrais pas que cela alourdisse trop le traitement.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Roumégou Eric
Le 06/03/2010, JeAn-PhI a supposé :
Roumégou Eric a exposé le 05/03/2010 :
Bonjour,

voici mon pb.
J'ai développé un module d'intégration de fichiers excel basé sur des
descriptions XML.
Mes données sont chargées dans une table mémoire selon ces descriptions,
Puis en intégration, je vais générer des ordres insert (en bulk) ou update
que je déclencherai après avoir relu ma table mémoire.

ça marche comme je veux mais il y a juste un truc que je voudrais
contrôler. Si un drole s'avise de me créer dans un meme fichier deux lignes
avec un meme identifiant, je vais être dans la situation d'un plantage sur
clé en double.

Ma question est très simple :
de quelle façon puis je m'assurer dans une colonne de table mémoire qu'il
n'y ait pas deux fois la mème valeur ?

tabletrie puis verif rupture, lire et stocker dans une zone mémoire ...
tout ça me semble un peu lourd et long. N'y aurait-il pas une instruction
magique ?

Merci de vos réponses.



lors du chargement de la table mémoire pourquoi ne pas stocker les id dans un
tableau avant l'ajout dans la table mémoire et finalement n'ajouter dans la
table mémoire que les id sans doublons



oui mais je me demandais s'il n'y avait pas plus rapide ?
je vais surement en arriver à cette solution

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)