Bonjour,
J'ai ce schema :
- Table 'Entity' (entity_id, completed, reference_year)
- Table 'Transaction' (transaction_id, statut, entity_id)
- Table 'Document'(document_id, transaction_id, fichier)
Les relations entre elles sont les suivantes :
- 1 Entity peut avoir plusieurs transactions (1-n)
- 1 Transaction peut avoir plusieurs documents (1-m)
Je souhaite cloner les transactions d'une entité (sous conditions) ainsi que leurs documents en utilisant un trigger.
Pour cela, j'ai fait ces deux triggers, le premier permet de cloner les transactions et le second permet de cloner les document ou fur et a mesure qu'une transaction est cloner.
Voici le code sql utilisée :
Quand je fait un insert dans entity , j'ai cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 -- Trigger clone Transaction CREATE TRIGGER `test_transaction` AFTER INSERT ON `entity` FOR EACH ROW BEGIN set @newValue = new.ENTITY_ID; INSERT INTO transaction(STATUS, ENTITY_ID) SELECT 'DRAFT', @newValue FROM entity a, transaction c WHERE a.entity_id = c.entity_id AND c.status IN ('VALIDATED', 'IN_PROGRESS') AND a.completed = 1 AND year(a.reference_year) = year(new.reference_year)-1 group by c.transaction_id; END; commit; -- Trigger clone documents CREATE TRIGGER `clone_document` AFTER INSERT ON `transaction` FOR EACH ROW BEGIN if new.parent_id is not null then -- parent_id est dans la table transaction set @newValue = new.transaction_id; INSERT INTO document(TRANSACTION_ID, FICHIER) SELECT @newValue, c.FICHIER FROM transaction a, document c WHERE a.transaction_id = c.transaction_id group by c.document_id; end if; END; commit;
Par contre si je supprime le second trigger et je clone uniquement les transactions, le clonage fonctionne bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Cannot add or update a child row: a foreign key constraint fails (`optidoc`.`transaction`, CONSTRAINT `FK_TRANSACTION_ENTITY` FOREIGN KEY (`ENTITY_ID`) REFERENCES `entity` (`ENTITY_ID`))
Si vous pouvez m'aider a resoudre ce probleme de clonage de deux niveaux.
Merci
Partager