Syntaxe Trigger Mysql / Transact SQL de SQL Server
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:
Code:
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 |
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é.
Merci! :D