FSN#26947 bij impliciet werkplek met bezetting deleten

svn path=/Database/trunk/; revision=18289
This commit is contained in:
Peter Feij
2013-06-28 08:15:48 +00:00
parent 9f959726e2
commit db98292b96
3 changed files with 29 additions and 16 deletions

View File

@@ -51,11 +51,6 @@ BEGIN
CHECK_NOG_REFERENCES(prs_perslid, prs_afdeling_verwijder,
prs_v_aanwezigperslid, prs_afdeling_key, 'prs_m015');
UPDATE_AANMAAKDATUM(prs_afdeling, prs_afdeling_aanmaak);
/* 6/20/97/AH #1312, De CASCADE-verwijderen van
* PRS_PERSLIDWERKPLEK verplaatst naar PRS011/Verwijderen. In de trigger een
* RESTRICTED toegevoegd om evt. fouten te kunnen voorkomen.
*/
CHECK_NOG_REFERENCES(prs_perslid, prs_afdeling_verwijder,
prs_v_aanwezigruimteafdeling, prs_afdeling_key, 'SYSTEM ERROR: In Afdeling, er zijn nog PRS_RUIMTEAFDELING-records');
IF :new.prs_afdeling_verwijder IS NOT NULL AND :old.prs_afdeling_verwijder IS NULL THEN
@@ -161,8 +156,20 @@ BEGIN
-- Hierna kan het verwijderen niet meer falen
BEGIN
DELETE FROM prs_perslidwerkplek
WHERE prs_perslid_key = :old.prs_perslid_key;
-- Ja, je zou zeggen dat dit een zaak is van prs_perslidwerkplek, maar
-- dat is toch niet zo. Bovendien krijg je dan nare mutating trigger errors.
IF fac.getsetting ('prs_werkplek_implicit') = 1
THEN
DELETE FROM prs_werkplek
WHERE prs_werkplek_key IN (SELECT prs_werkplek_key
FROM prs_perslidwerkplek
WHERE prs_perslid_key = :old.prs_perslid_key);
-- Deze delete cascadeert naar de werkplekbezetting door, gooit die dus ook weg
ELSE
-- Bij expliciet gooien wij de bezetting weg en blijft de werkplek leeg achter
DELETE FROM prs_perslidwerkplek
WHERE prs_perslid_key = :old.prs_perslid_key;
END IF;
END;
-- Verwijder mandateringen
BEGIN
@@ -264,13 +271,6 @@ FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(prs_perslidwerkplek_key, prs_s_prs_perslidwerkplek_key);
UPDATE_AANMAAKDATUM(prs_perslidwerkplek, prs_perslidwerkplek_aanmaak);
/*
* 10-7-97 AH #1365, PRS_PERSLIDWERKPLEK_VERWIJDER-velden weggehaald.
*
* 5/26/97 AH #1255, VERWIJDER-veld mag niet meer gebruikt worden ivm. MUTATING TABLE
* bij CASCADE van PRS_PERSLID, enz. Dus hier een controle toegevoegd
*/
END;
/