Bonjour à tous,
Je suis en train de convertir une base de données HF en base de données SQL Server.
J'ai pas mal de relations entre les tables et j'aimerai, en toute logique, faire des mises à jour/suppression en cascade. Par exemple : la suppression d'un client va engendrer la suppression de ses contrats, et la suppression de ses contrats va engendrer la suppression des lignes des contrats respectifs...
Voici comment je traduit cela en SQL :
Seulement, j'ai souvent des messages d'erreurs qui m'indiquent que je ne peux pas créer de multiples contraintes de mise à jour en cascade :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE TABLE Contrats ( Cont_num INTEGER IDENTITY, Cont_clicode VARCHAR(10) CONSTRAINT FK_Contrats_clicode FOREIGN KEY (Cont_clicode) REFERENCES Clients (Cli_code) ON UPDATE CASCADE ON DELETE CASCADE )
De ce que j'ai lu en parcourant le forum, il est dangereux d'utiliser les mises à jour en cascade en raison du blocage d'enregistrements.L'introduction d'une contrainte FOREIGN KEY 'FK_Contrats_clicode' sur la table 'Contrats' peut provoquer des cycles ou des accès en cascade multiples. Spécifiez ON DELETE NO ACTION ou ON UPDATE NO ACTION, ou modifiez d'autres contraintes FOREIGN KEY.
Je trouve cela dommage car dans ce cas comment mettre en application ma contrainte ? En passant par des triggers ? Mais le problème ne va-t'il pas être le même ?
Est-ce que quelqu'un aurait un discours à me proposer sur cette question ? Un article qui traite de cela ? Afin que je puisse apprendre et avancer dans cette problématique.
Merci d'avance![]()
Partager