53 lines
3.3 KiB
C
53 lines
3.3 KiB
C
/* SET_DWGUPTODATE: set de dwg_uptodate-velden op SYSDATE van de records die
|
|
* nog niet een waarde hebben.
|
|
* TRICKY: er wordt ipv. '=' 'IN' gebruikt, omdat reference_key meestal
|
|
* een SELECT-statement is en IN gelijk is aan = voor een keiharde waarde.
|
|
*
|
|
* History:
|
|
*/
|
|
|
|
#define SET_VERWIJDER_CHILDREN_DEEL(child_table, parent_key, parent_verwijder, \
|
|
dummy1, child_verwijder, child_key, dummy2) \
|
|
BEGIN \
|
|
IF :new.parent_verwijder IS NOT NULL OR \
|
|
(:new.parent_verwijder IS NULL AND :old.parent_verwijder IS NOT NULL) \
|
|
THEN \
|
|
UPDATE child_table \
|
|
SET child_verwijder = :new.parent_verwijder \
|
|
WHERE child_table.child_key = :new.parent_key \
|
|
AND ins_alg_ruimte_type NOT IN ('W','T'); \
|
|
END IF; \
|
|
END
|
|
|
|
#define SET_VERWIJDER_CHILDREN_DEELT(child_table, parent_key, parent_verwijder, \
|
|
dummy1, child_verwijder, child_key, dummy2) \
|
|
BEGIN \
|
|
IF :new.parent_verwijder IS NOT NULL OR \
|
|
(:new.parent_verwijder IS NULL AND :old.parent_verwijder IS NOT NULL) \
|
|
THEN \
|
|
UPDATE child_table \
|
|
SET child_verwijder = :new.parent_verwijder \
|
|
WHERE child_table.child_key = :new.parent_key \
|
|
AND ins_alg_ruimte_type = 'T';\
|
|
END IF; \
|
|
END
|
|
|
|
#define SET_VERWIJDER_CHILDREN_DEELWP(child_table, parent_key, parent_verwijder, \
|
|
dummy1, child_verwijder, child_key, dummy2) \
|
|
BEGIN \
|
|
IF :new.parent_verwijder IS NOT NULL \
|
|
THEN \
|
|
UPDATE child_table \
|
|
SET child_verwijder = :new.parent_verwijder \
|
|
WHERE child_table.child_key = :new.parent_key \
|
|
AND child_table.ins_alg_ruimte_type = 'W' \
|
|
AND child_table.ins_deel_verwijder IS NULL; \
|
|
ELSIF (:new.parent_verwijder IS NULL AND :old.parent_verwijder IS NOT NULL)\
|
|
THEN \
|
|
UPDATE child_table \
|
|
SET child_verwijder = :new.parent_verwijder \
|
|
WHERE child_table.child_key = :new.parent_key \
|
|
AND ins_alg_ruimte_type = 'W'; \
|
|
END_IF; \
|
|
END
|