Bonjour,
J'ai deux tables enfants de type Paradox, Table2, Table3 en relation avec Table1 par le champs NumId. NumId étant un champs unique. Est il possible de supprimer tous les enregistrements de Table2 et Table3 ayant le même NumId en une seule requête SQL lors de la suppression dans Table1 d'un enregistrement.
Requête du genre DELETE FROM Table2, Table3 WHERE NumId = :NumId.
Comment affecter la propriété DataSet du DataSource
Merci de votre aide éventuelle car je commence SQL.
Ce n'est pas possible en une seule requête. Paradox gère très mal l'intégrité référentielle. Si tu débutes, pourquoi ne pas commencer directement sur un SGBD plus "sérieux" que paradox ? C'est obsolète et source de multiples problème. Essaie avec Firebird par exemple (SGBD open source), que tu peux gérer avec FlameRobin (les éditeurs de bases Firebird ne manquent pas sur le net). Firebird gère très bien les intégrités référentielles...
le mieux pour ce type d'opérations est de régler les options dans la création de la base (sous Firebird) en créant deux contraintes sur les tables 2 et 3 en cascade.
et plus besoin de SQL, puisque la suppression d'un enregistrement de la table1 entraîne nécessairement la suppression des données correspondantes dans les deux tables annexes.
Ah pardon Cantador, mais tu peux quand même faire un delete via une requête sql sur la table1, et l'intégrité référentielle (les clés étrangères) font le reste sur les tables 2 et 3... ;)
Merci pour vos réponses. Je suis retraité, j'ai beaucoup développé avec Clipper lorsque je travaillais et suis venu à Delphi vers la fin de ma carrière quand les applis dans les ateliers on du passer sous windows lors du renouvellement des PC. Actuellement quand j'ai le temps je m'amuse avec Delphi. Je vais essayer Firebird.