PC SOFT
Accueil
Nouveau contenu
[WD14] doublon primary key
Débuté par popup, 25 juil. 2012 05:24 - 2 réponses
http://hostimage.webdev.info/avatars/47CrklEc4fRpYL7Vf2X1Mg
Membre enregistré
8 messages
Posté le 25 juillet 2012 - 05:24
bonjour,

avec HExécuteRequêteSQL(sdNtmp,hRequêteDéfaut+hModifieFichier,sql),
HF n'insert les lignes même si la clé primaire est deja présente dans la table.

J'ai donc des doublons de clés primaire. Y a-t-il quelquechose que je peux faire au niveau de la requete?? type insert ignore...pour que HF respecte enfin l"unicité de la clé primaire.
http://hostimage.webdev.info/avatars/47CrklEc4fRpYL7Vf2X1Mg
Membre enregistré
8 messages
Posté le 01 août 2012 - 10:54
up post. merci de me donner une réponse si qq à une idée
http://hostimage.webdev.info/avatars/default.gif
Posté le 01 août 2012 - 11:57
popup a émis l'idée suivante :
> up post. merci de me donner une réponse si qq à une idée

en lisant l'aide (ie :
http://doc.pcsoft.fr/fr-FR/?3044084&name=hexecuterequetesql-fonction)
vous aurez la réponse :

Requêtes SQL (fonction HExécuteRequêteSQL ou exécution de requêtes SQL
créées par l'éditeur de requêtes)

Lors de l'utilisation des instructions SQL DELETE, INSERT ou UPDATE
dans des requêtes SQL, par défaut, aucun contrôle d'intégrité et aucun
contrôle de doublons ne sont réalisés sur une base de données
HyperFileSQL.

Pour effectuer un contrôle automatique de l'intégrité, il suffit de
préciser la constante hVérifieIntégrité. Cette constante permet
d'activer la gestion de l'intégrité pendant l'exécution de la requête.
Si une erreur d'intégrité est détectée, la requête n'est pas exécutée.
En effet, une transaction est démarrée, les enregistrements sont
bloqués en écriture pendant l'exécution de la requête, et débloqués à
la fin de son exécution, que la requête échoue ou non. Si l'application
est arrêtée pendant l'exécution de la requête (coupure de courant par
exemple), la transaction sera annulée à la prochaine utilisation des
fichiers de données de la requête.

Pour effectuer un contrôle automatique des doublons, il suffit de
préciser la constante hVérifieDoublons. Cette constante permet
d'activer la gestion des doublons pendant l'exécution de la requête. Si
une erreur de doublons est détectée, la requête n'est pas exécutée. En
effet, une transaction est démarrée, les enregistrements sont bloqués
en écriture pendant l'exécution de la requête, et débloqués à la fin de
son exécution, que la requête échoue ou non. Si l'application est
arrêtée pendant l'exécution de la requête (coupure de courant par
exemple), la transaction sera annulée à la prochaine utilisation des
fichiers de données de la requête.

Note : Si une erreur de doublons est détectée lors de l'exécution d'une
requête de type UPDATE, la fonction HExécuteRequête renvoie Faux et le
traitement continue. L'erreur correspondante peut être connue grâce à
la fonction HErreurInfo.

Remarque : L'assistance automatique par défaut n'est pas appelée pour
les erreurs de doublons. Une simple erreur de doublons est générée. Si
une assistance a été redéfinie à l'aide de la fonction HSurErreur,
alors cette assistance personnalisée est appelée.

--
Cordialement JeAn-PhI