I need help with a multiple condition trigger. I saw a post on Dec '06 and coded my trigger like that one but it still doesn't work. I am using DB2 V9 on z/OS.
CREATE TRIGGER DB2DBA.DSOPTCR5
NO CASCADE BEFORE INSERT ON MAD.DSOPTCT
REFERENCING NEW AS N
FOR EACH ROW MODE DB2SQL
SELECT CASE WHEN N.CNSTRNT_TO_TY PE_CD = 'C'
AND NOT EXISTS(SELECT 1
FROM MAD.DSCNCUT
WHERE MAD.DSCNCUT.CUS T_GUID = N.TO_GUID)
THEN CAST(RAISE_ERRO R(
'MI001',
'CUSTOMER IS NOT ON FILE')) AS INT
WHEN N.CNSTRNT_TO_TY PE_CD = 'H'
AND NOT EXISTS(SELECT 1
FROM MAD.DSCNHAT
WHERE MAD.DSCNHAT.CUS T_GUID = N.TO_GUID)
RAISE_ERROR(
'MI001',
'HAULER IS NOT ON FILE');
WHEN N.CNSTRNT_TO_TY PE_CD = 'L'
AND NOT EXISTS(SELECT 1
FROM MAD.DSCNLDT
WHERE MAD.DSCNLDT.CUS T_GUID = N.TO_GUID)
RAISE_ERROR(
'MI001',
'THE LOAD IS NOT ON FILE');
END
FROM SYSIBM.SYSDUMMY 1;
Thank you for your help.
CREATE TRIGGER DB2DBA.DSOPTCR5
NO CASCADE BEFORE INSERT ON MAD.DSOPTCT
REFERENCING NEW AS N
FOR EACH ROW MODE DB2SQL
SELECT CASE WHEN N.CNSTRNT_TO_TY PE_CD = 'C'
AND NOT EXISTS(SELECT 1
FROM MAD.DSCNCUT
WHERE MAD.DSCNCUT.CUS T_GUID = N.TO_GUID)
THEN CAST(RAISE_ERRO R(
'MI001',
'CUSTOMER IS NOT ON FILE')) AS INT
WHEN N.CNSTRNT_TO_TY PE_CD = 'H'
AND NOT EXISTS(SELECT 1
FROM MAD.DSCNHAT
WHERE MAD.DSCNHAT.CUS T_GUID = N.TO_GUID)
RAISE_ERROR(
'MI001',
'HAULER IS NOT ON FILE');
WHEN N.CNSTRNT_TO_TY PE_CD = 'L'
AND NOT EXISTS(SELECT 1
FROM MAD.DSCNLDT
WHERE MAD.DSCNLDT.CUS T_GUID = N.TO_GUID)
RAISE_ERROR(
'MI001',
'THE LOAD IS NOT ON FILE');
END
FROM SYSIBM.SYSDUMMY 1;
Thank you for your help.