Bonjour,
Je suis en train d'appliquer cet excellent tutorial concernant l'héritage en BDD, et j'aimerais avoir la version MySql de ce trigger, écrit en Transact SQL de SQL Server:
Je ne suis pas sûr que MySql supporte toutes ces fonctions, notamment d'erreurs, donc je suis preneur de toute "traduction" en MySql, même simplifié.
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 /* Trigger sur T_CAMION_CMN pour contrôler l'insertion */ CREATE TRIGGER TRG_INS_T_CAMION ON T_CAMION_CMN FOR INSERT, UPDATE AS BEGIN DECLARE @errno INTEGER, @errmsg VARCHAR(255) /* La clef de "T_VEHICULE_VHC" doit exister pour la création de "T_CAMION_CMN" */ IF NOT EXISTS(SELECT * FROM T_VEHICULE_VHC T INNER JOIN INSERTED I ON T.VHC_ID = I.VHC_ID) BEGIN SET @errno = 30002 SET @errmsg = 'Clef de "T_VEHICULE_VHC" inconnu. Insertion dans "T_CAMION_CMN" impossible.' GOTO LBL_ERROR END /* l'identifiant de camion ne doit pas être utilisé par les autres tables filles */ IF EXISTS (SELECT * FROM (SELECT VHC_ID FROM T_MOTO_MTO UNION ALL SELECT VHC_ID FROM T_VOITURE_VTR) T WHERE VHC_ID IN (SELECT VHC_ID FROM INSERTED)) BEGIN SET @errno = 30002 SET @errmsg = 'Clef de "T_VEHICULE_VHC" déjà utilisée par ailleur. Insertion dans "T_CAMION_CMN" impossible.' GOTO LBL_ERROR END RETURN /* Gestion d'erreurs */ LBL_ERROR: RAISERROR @errno @errmsg ROLLBACK TRANSACTION END GO
Merci!![]()
Partager