|
| delete cascade ne fonctionne pas |
| Iniciado por martin.randrianantoanina, 10,dic. 2014 08:45 - 18 respuestas |
| |
| | | |
|
| |
| Publicado el 10,diciembre 2014 - 08:45 |
Bonjour,
Quelqu'un aurait il eu le même souci que moi? Les fonctionnalités de DELETE CASCADE et UPDATE CASCADE ne marchent pas sur mes fichiers HyperFile Client/Serveur, même si j'exécute les DELETEs dans le centre de contrôle HyperFile, les enregistrements filles ne sont pas supprimés automatiquement ensupprimant les enrgistrements parents.
Si quelqu'un aurait une idée.
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.418 mensajes |
|
| Publicado el 10,diciembre 2014 - 10:02 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 10,diciembre 2014 - 10:25 |
Bonjour, A ma connaissance , le DELETE CASCADE ou Update Cascade n'est pas un standard SQL. En tout cas, si on regarde l'aide en ligne de PCSOFT, sur la page dédiée aux instructions SQL, ils ne parlent pas du tout de DELETE CASCADE.
Il faut donc oublier le DELETE CASCADE. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 10,diciembre 2014 - 12:23 |
Joel a présenté l'énoncé suivant :
Bonjour, A ma connaissance , le DELETE CASCADE ou Update Cascade n'est pas un standard SQL. En tout cas, si on regarde l'aide en ligne de PCSOFT, sur la page dédiée aux instructions SQL, ils ne parlent pas du tout de DELETE CASCADE.
Il faut donc oublier le DELETE CASCADE.
la commande delete cascade n'est pas un standard par contre le delete en cascade oui, cela ce determine lors de la création de la table (ex pour MySQL)
CREATE TABLE IF NOT EXISTS `schema`.`Employee` ( `idEmployee` VARCHAR(45) NOT NULL , `Name` VARCHAR(255) NULL , `idAddresses` VARCHAR(45) NULL , PRIMARY KEY (`idEmployee`) , CONSTRAINT `fkEmployee_Addresses` FOREIGN KEY `fkEmployee_Addresses` (`idAddresses`) REFERENCES `schema`.`Addresses` (`idAddresses`) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin
voir ici :
http://sqlpro.developpez.com/cours/sqlaz/ddl/…
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.418 mensajes |
|
| Publicado el 10,diciembre 2014 - 13:00 |
Pourquoi Oublié le DELETE en cascade sous prétexte que dans le SQL Pur il n'existe pas
Si j’achète une voiture avec siège chauffant, donc selon ta réflexion je ne dois pas l'utilisé car en générale sur les voiture cela n'est pas en standard !
J'avoue ne pas comprendre
-- Bertin CARRIERE Consultant & Formateur bertin.carriere@gmail.com http://www.zen-project.be http://www.linkedin.com/in/bertincarriere Belgique +32(0)2/318.02.67 France +33(0)3/66.722.542 Espagne +34.5/12.702.266
Membre de http://www.be-dev.be |
| |
| |
| | | |
|
| | |
| |
| Publicado el 10,diciembre 2014 - 14:54 |
Bertin CARRIERE avait prétendu :
Pourquoi Oublié le DELETE en cascade sous prétexte que dans le SQL Pur il n'existe pas
Si j’achète une voiture avec siège chauffant, donc selon ta réflexion je ne dois pas l'utilisé car en générale sur les voiture cela n'est pas en standard !
J'avoue ne pas comprendre
le delete en cascade existe et fait partie de la norme c'est la commande "DELETE CASCADE" qui n'est pas normé
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
| Publicado el 10,diciembre 2014 - 16:03 |
Je vais reformuler mon message un peu différemment : Le DELETE en cascade est peut-être un Standard SQL, ou peut-être pas, et je m'en moque. Ca ne change rien au résultat, puisque HFSQL ne supporte pas toutes les fonctionnalités de SQL.
D'autre part, quand je consulte l'aide (qui est extrêmement bien détaillée et extrêmement complète), j'ai beau consulter la page sur l'ANALYSE, sur les LIAISONS, sur LA CARDINALITE, SUR L'INTEGRITE REFERENTIELLE, à aucun endroit je ne vois cette notion de CASCADE.
Donc, à mon humble avis : - option 1 : Ne pas utiliser HFSQL mais MySQL , ou d'autres systèmes de bases de données, et dans ce cas, tu pourras utiliser DELETE CASCADE. En tout cas, Jean-Phi nous dit que ça marche avec MySQL. - option 2 : Rester sur HFSQL, et continuer les recherches, mais je serais très surpris que cela aboutisse. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 10,diciembre 2014 - 16:22 |
Le 10/12/2014 15:03, Joel a écrit :
Je vais reformuler mon message un peu différemment : Le DELETE en cascade est peut-être un Standard SQL, ou peut-être pas, et je m'en moque. Ca ne change rien au résultat, puisque HFSQL ne supporte pas toutes les fonctionnalités de SQL.
D'autre part, quand je consulte l'aide (qui est extrêmement bien détaillée et extrêmement complète), j'ai beau consulter la page sur l'ANALYSE, sur les LIAISONS, sur LA CARDINALITE, SUR L'INTEGRITE REFERENTIELLE, à aucun endroit je ne vois cette notion de CASCADE.
Donc, à mon humble avis : - option 1 : Ne pas utiliser HFSQL mais MySQL , ou d'autres systèmes de bases de données, et dans ce cas, tu pourras utiliser DELETE CASCADE. En tout cas, Jean-Phi nous dit que ça marche avec MySQL. - option 2 : Rester sur HFSQL, et continuer les recherches, mais je serais très surpris que cela aboutisse. Dans les cardinalités des liaison ... avancé tu dois trouver ton bonheur. Pour ma part.. Facture Ligne facture Cardinalité 1 = n En en cas de suppression de factures ... supprime automatiquement les lignes de la facture ... c'est comme cela que je le comprend le delete cascade . Je connais pas la syntaxe exacte ... voir dans l'analyses mais cela marche Bon windev TU peux employer Oracle / MysQL ... bien que l'on dise (n'est pas gratuit) et ou autre le prix est quand même .... sybase etc le principe est le même La seule chose qui a avec le SQL de Windev ce n'est pas un standard dans le sens que des fois la syntaxe du SQL n'est pas respecté et il manque encore des commandes Je pratique le SQL Anywhere je tique des fois. Mais le gros avantage c'est le prix. Et l'on parvient à contourner cela avec les commandes de Hyperfile etc etc |
| |
| |
| | | |
|
| | |
| |
| Publicado el 11,diciembre 2014 - 06:31 |
Bonjour à tous,
J'ai toujours utilisé HyperFile avant et ça marche top, c'est au moment de la création de l'analyse, fichier et liaison qu'on définisse si l'on doit supprimer ou pas les enregistrements filles suite à une suppression de l'enregistrement parents. C'est la première fois que j'utilise HyperFileSQL en Client/Serveur, les liaisons sont biens visibles dans le centre de contrôle HyperFileSQL. Si ça ne se fait pas automatiquement, on pourrait toujours coder pour les supprimer, mais j'ai besoin d'affirmation pour me dire que cela ne fonctionne pas sur l'environnement client/serveur de HyperFile. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 11,diciembre 2014 - 06:40 |
| Les liaisons sont bien présentes dans le centre de contrôle CS/HF. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 11,diciembre 2014 - 07:06 |
Feiereisen Marcel a écrit :
Le 10/12/2014 15:03, Joel a écrit : Je vais reformuler mon message un peu différemment : Le DELETE en cascade est peut-être un Standard SQL, ou peut-être pas, et je m'en moque. Ca ne change rien au résultat, puisque HFSQL ne supporte pas toutes les fonctionnalités de SQL.
D'autre part, quand je consulte l'aide (qui est extrêmement bien détaillée et extrêmement complète), j'ai beau consulter la page sur l'ANALYSE, sur les LIAISONS, sur LA CARDINALITE, SUR L'INTEGRITE REFERENTIELLE, à aucun endroit je ne vois cette notion de CASCADE.
Donc, à mon humble avis : - option 1 : Ne pas utiliser HFSQL mais MySQL , ou d'autres systèmes de bases de données, et dans ce cas, tu pourras utiliser DELETE CASCADE. En tout cas, Jean-Phi nous dit que ça marche avec MySQL. - option 2 : Rester sur HFSQL, et continuer les recherches, mais je serais très surpris que cela aboutisse. Dans les cardinalités des liaison ... avancé tu dois trouver ton bonheur. Pour ma part.. Facture Ligne facture Cardinalité 1 = n En en cas de suppression de factures ... supprime automatiquement les lignes de la facture ... c'est comme cela que je le comprend le delete cascade . Je connais pas la syntaxe exacte ... voir dans l'analyses mais cela marche Bon windev TU peux employer Oracle / MysQL ... bien que l'on dise (n'est pas gratuit) et ou autre le prix est quand même .... sybase etc le principe est le même La seule chose qui a avec le SQL de Windev ce n'est pas un standard dans le sens que des fois la syntaxe du SQL n'est pas respecté et il manque encore des commandes Je pratique le SQL Anywhere je tique des fois. Mais le gros avantage c'est le prix. Et l'on parvient à contourner cela avec les commandes de Hyperfile etc etc
Les liaisons et règles correspondantes sont bien définies dans l'analyse, je ne comprend pas pourquoi ça ne répond pas correctement. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 24 mensajes |
|
| Publicado el 11,diciembre 2014 - 08:26 |
Bonjour
Juste pour info, ce que nous avons trouvé à ce sujet... HExecuteRequete avec l'option hVérifieIntégrité devrait vous donner satisfaction. http://doc.pcsoft.fr/fr-FR/?3044080&name=HExecuteRequete
Lors de notre essais, la suppression dans un fichier a bien supprimé dans les fichiers liés (sans que nous l'ayons spécifié).
-- ++ R&B |
| |
| |
| | | |
|
| | |
| |
| Publicado el 11,diciembre 2014 - 09:09 |
R&B a écrit :
Bonjour Juste pour info, ce que nous avons trouvé à ce sujet... HExecuteRequete avec l'option hVérifieIntégrité devrait vous donner satisfaction. http://doc.pcsoft.fr/fr-FR/?3044080&name=HExecuteRequeteLors de notre essais, la suppression dans un fichier a bien supprimé dans les fichiers liés (sans que nous l'ayons spécifié). -- ++ R&B Bonjour,
Merci pour votre intérêt. J'ai essayé HexecuteRequête et HexecuteRequêteSQL avec hVérifieIntégrité , mais toujours le même résultat, l'entête de la facture est bien supprimé mais les lignes de la facture reste dans la BDD. Je crois que c'est l'environnement HF/CS qui a un souci. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 11,diciembre 2014 - 13:17 |
Le 11/12/2014 05:31, Martin Randrianantoanina a écrit :
Bonjour à tous,
J'ai toujours utilisé HyperFile avant et ça marche top, c'est au moment de la création de l'analyse, fichier et liaison qu'on définisse si l'on doit supprimer ou pas les enregistrements filles suite à une suppression de l'enregistrement parents. C'est la première fois que j'utilise HyperFileSQL en Client/Serveur, les liaisons sont biens visibles dans le centre de contrôle HyperFileSQL. Si ça ne se fait pas automatiquement, on pourrait toujours coder pour les supprimer, mais j'ai besoin d'affirmation pour me dire que cela ne fonctionne pas sur l'environnement client/serveur de HyperFile. Chez moi cela fonctionne correctement depuis X années Ma cardinalité avancé est si suppression facture Code ... il supprime bien les ligne avec le même code de la facture aussi bien C/S que classique |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.418 mensajes |
|
| Publicado el 11,diciembre 2014 - 16:09 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,diciembre 2014 - 06:24 |
Bertin CARRIERE a écrit :
Onglet LIAISON, vous voulez dire, oui. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,diciembre 2014 - 07:11 |
Peut être que ça a un rapport mais je code en SQL dans mon projet, et même les recherches dans les fichiers me retournent de résultats bizarres. Dans CC HF, il y a un onglet SQL pour lancer des DDL sur les fichiers, si je fais le delete à partir de là, ça ne fonctionne pas comme je le voudrait mais quand je supprime un enregistrement à partir d'un bouton SUPPRIMER dans le visionneur de contenu de fichier par défaut du même CC HF, le delete cascade fonctionne.
Ma conclusion en ce moment (jusqu'à ce que quelqu'un trouve une solution) est que quand on utilise une base HyperFile, il faut impérativement coder en W-Langage sinon il faut utiliser une base SQL standard. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,diciembre 2014 - 09:31 |
Le 12/12/2014 06:11, Martin Randrianantoanina a écrit :
Peut être que ça a un rapport mais je code en SQL dans mon projet, et même les recherches dans les fichiers me retournent de résultats bizarres. Dans CC HF, il y a un onglet SQL pour lancer des DDL sur les fichiers, si je fais le delete à partir de là, ça ne fonctionne pas comme je le voudrait mais quand je supprime un enregistrement à partir d'un bouton SUPPRIMER dans le visionneur de contenu de fichier par défaut du même CC HF, le delete cascade fonctionne.
Ma conclusion en ce moment (jusqu'à ce que quelqu'un trouve une solution) est que quand on utilise une base HyperFile, il faut impérativement coder en W-Langage sinon il faut utiliser une base SQL standard.
aussi bien en wlangage hsupprime(facture) ... en me mettant sur la facture
mon code sql
REQ est une Source de Données sMaReq est une chaîne = [ delete FROM FACTURES WHERE FACTURES.C_PAT= '%1' ] ParametreAncienCode est une chaîne = FACTURE_A_SUPPRIMER // %1
sMaReq = ChaîneConstruit(sMaReq,ParametreAncienCode ) SI PAS HExécuteRequêteSQL(REQ, hRequêteDéfaut, sMaReq) ALORS Erreur(HErreurInfo()) FIN HAnnuleDéclaration(REQ)
et les lignes des factures ... car ici je supprime toutes les factures du clients Je viens de vérifier ... cela marche tip top donc ce sont tes cardinalités qui sont mauvaises ... pour moi |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,diciembre 2014 - 11:30 |
Feiereisen Marcel a écrit :
Le 12/12/2014 06:11, Martin Randrianantoanina a écrit : Peut être que ça a un rapport mais je code en SQL dans mon projet, et même les recherches dans les fichiers me retournent de résultats bizarres. Dans CC HF, il y a un onglet SQL pour lancer des DDL sur les fichiers, si je fais le delete à partir de là, ça ne fonctionne pas comme je le voudrait mais quand je supprime un enregistrement à partir d'un bouton SUPPRIMER dans le visionneur de contenu de fichier par défaut du même CC HF, le delete cascade fonctionne.
Ma conclusion en ce moment (jusqu'à ce que quelqu'un trouve une solution) est que quand on utilise une base HyperFile, il faut impérativement coder en W-Langage sinon il faut utiliser une base SQL standard.
aussi bien en wlangage hsupprime(facture) ... en me mettant sur la facture mon code sql REQ est une Source de Données sMaReq est une chaîne = [ delete FROM FACTURES WHERE FACTURES.C_PAT= '%1' ] ParametreAncienCode est une chaîne = FACTURE_A_SUPPRIMER // %1 sMaReq = ChaîneConstruit(sMaReq,ParametreAncienCode ) SI PAS HExécuteRequêteSQL(REQ, hRequêteDéfaut, sMaReq) ALORS Erreur(HErreurInfo()) FIN HAnnuleDéclaration(REQ) et les lignes des factures ... car ici je supprime toutes les factures du clients Je viens de vérifier ... cela marche tip top donc ce sont tes cardinalités qui sont mauvaises ... pour moi
Merci à toi mais je viens de passer en code Wlangage et sans toucher quoi que ce soit, cela fonctionne. |
| |
| |
| | | |
|
| | | | |
| | |
|