Beschreibung
Damit wird Anwendergruppen Recht SE Code in die Rechte Tabelle repliziert.
Definition
CREATE TRIGGER AG_AFTER_UP_UPDATE_RECHTE FOR ANWENDERGRUPPEN
ACTIVE AFTER UPDATE POSITION 1
AS
DECLARE VARIABLE recht_id INTEGER;
DECLARE VARIABLE zugriff smallint;
DECLARE VARIABLE record_count INTEGER;
BEGIN
/* RECHT ServiceMainScheduler.UPDATE_SENDEELEMENT_IN_GROUP setzen */
IF ((OLD.AGSEGRPCOD <> NEW.AGSEGRPCOD) OR
((NEW.AGSEGRPCOD IS NULL) AND (OLD.AGSEGRPCOD IS NOT NULL)) OR
((OLD.AGSEGRPCOD IS NULL) AND (NEW.AGSEGRPCOD IS NOT NULL))) THEN
BEGIN
FOR SELECT RTID FROM RECHTE WHERE RTOLDNAME = 'AGSEGRPCOD' ROWS 1 INTO :recht_id DO
BEGIN
SELECT COUNT(*) FROM RECHTE_ANWENDERGRUPPE WHERE RARTID = :recht_id AND RAAGID = NEW.AGID INTO :record_count;
IF (record_count > 0) THEN
BEGIN
UPDATE RECHTE_ANWENDERGRUPPE SET RAZUGRIFFDATA = NEW.AGSEGRPCOD WHERE RAAGID = NEW.AGID AND RARTID = :recht_id;
END ELSE
BEGIN
INSERT INTO RECHTE_ANWENDERGRUPPE (RARTID, RAAGID, RAZUGRIFF, RAZUGRIFFDATA) VALUES (:recht_id, NEW.AGID, 1, NEW.AGSEGRPCOD);
END
END
END
/* RECHT ServiceMainScheduler.SENDEELEMENT_ADD setzen */
IF ((OLD.AGSECRE <> NEW.AGSECRE) OR
((NEW.AGSECRE IS NULL) AND (OLD.AGSECRE IS NOT NULL)) OR
((OLD.AGSECRE IS NULL) AND (NEW.AGSECRE IS NOT NULL))) THEN
BEGIN
FOR SELECT RTID FROM RECHTE WHERE RTOLDNAME = 'AGSECRE' ROWS 1 INTO :recht_id DO
BEGIN
IF (NEW.AGSECRE IS NULL) THEN
begin
zugriff = 0;
end else
begin
zugriff = NEW.AGSECRE;
end
SELECT COUNT(*) FROM RECHTE_ANWENDERGRUPPE WHERE RARTID = :recht_id AND RAAGID = NEW.AGID INTO :record_count;
IF (record_count > 0) THEN
BEGIN
UPDATE RECHTE_ANWENDERGRUPPE SET RAZUGRIFF = :zugriff WHERE RAAGID = NEW.AGID AND RARTID = :recht_id;
END ELSE
BEGIN
INSERT INTO RECHTE_ANWENDERGRUPPE (RARTID, RAAGID, RAZUGRIFF, RAZUGRIFFDATA) VALUES (:recht_id, NEW.AGID, :zugriff, null);
END
END
END
/* RECHT ServiceMainScheduler.SENDEELEMENT_UPDATE setzen */
IF ((OLD.AGSEEDTDET <> NEW.AGSEEDTDET) OR
((NEW.AGSEEDTDET IS NULL) AND (OLD.AGSEEDTDET IS NOT NULL)) OR
((OLD.AGSEEDTDET IS NULL) AND (NEW.AGSEEDTDET IS NOT NULL))) THEN
BEGIN
FOR SELECT RTID FROM RECHTE WHERE RTOLDNAME = 'AGSEEDTDET' ROWS 1 INTO :recht_id DO
BEGIN
IF (NEW.AGSEEDTDET IS NULL) THEN
begin
zugriff = 0;
end else
begin
zugriff = NEW.AGSEEDTDET;
end
SELECT COUNT(*) FROM RECHTE_ANWENDERGRUPPE WHERE RARTID = :recht_id AND RAAGID = NEW.AGID INTO :record_count;
IF (record_count > 0) THEN
BEGIN
UPDATE RECHTE_ANWENDERGRUPPE SET RAZUGRIFF = :zugriff WHERE RAAGID = NEW.AGID AND RARTID = :recht_id;
END ELSE
BEGIN
INSERT INTO RECHTE_ANWENDERGRUPPE (RARTID, RAAGID, RAZUGRIFF, RAZUGRIFFDATA) VALUES (:recht_id, NEW.AGID, :zugriff, null);
END
END
END
/* RECHT ServiceMainScheduler.SENDEELEMENT_DELETE setzen */
IF ((OLD.AGSEDEL <> NEW.AGSEDEL) OR
((NEW.AGSEDEL IS NULL) AND (OLD.AGSEDEL IS NOT NULL)) OR
((OLD.AGSEDEL IS NULL) AND (NEW.AGSEDEL IS NOT NULL))) THEN
BEGIN
FOR SELECT RTID FROM RECHTE WHERE RTOLDNAME = 'AGSEDEL' ROWS 1 INTO :recht_id DO
BEGIN
IF (NEW.AGSEDEL IS NULL) THEN
begin
zugriff = 0;
end else
begin
zugriff = NEW.AGSEDEL;
end
SELECT COUNT(*) FROM RECHTE_ANWENDERGRUPPE WHERE RARTID = :recht_id AND RAAGID = NEW.AGID INTO :record_count;
IF (record_count > 0) THEN
BEGIN
UPDATE RECHTE_ANWENDERGRUPPE SET RAZUGRIFF = :zugriff WHERE RAAGID = NEW.AGID AND RARTID = :recht_id;
END ELSE
BEGIN
INSERT INTO RECHTE_ANWENDERGRUPPE (RARTID, RAAGID, RAZUGRIFF, RAZUGRIFFDATA) VALUES (:recht_id, NEW.AGID, :zugriff, null);
END
END
END
/* RECHT ServiceCommon.IMPORT_WERBUNG setzen */
IF ((OLD.AGIMPW <> NEW.AGIMPW) OR
((NEW.AGIMPW IS NULL) AND (OLD.AGIMPW IS NOT NULL)) OR
((OLD.AGIMPW IS NULL) AND (NEW.AGIMPW IS NOT NULL))) THEN
BEGIN
FOR SELECT RTID FROM RECHTE WHERE RTOLDNAME = 'AGIMPW' ROWS 1 INTO :recht_id DO
BEGIN
IF (NEW.AGIMPW IS NULL) THEN
begin
zugriff = 0;
end else
begin
zugriff = NEW.AGIMPW;
end
SELECT COUNT(*) FROM RECHTE_ANWENDERGRUPPE WHERE RARTID = :recht_id AND RAAGID = NEW.AGID INTO :record_count;
IF (record_count > 0) THEN
BEGIN
UPDATE RECHTE_ANWENDERGRUPPE SET RAZUGRIFF = :zugriff WHERE RAAGID = NEW.AGID AND RARTID = :recht_id;
END ELSE
BEGIN
INSERT INTO RECHTE_ANWENDERGRUPPE (RARTID, RAAGID, RAZUGRIFF, RAZUGRIFFDATA) VALUES (:recht_id, NEW.AGID, :zugriff, null);
END
END
END
/* RECHT ServiceCommon.IMPORT_MUSIK setzen */
IF ((OLD.AGIMPM <> NEW.AGIMPM) OR
((NEW.AGIMPM IS NULL) AND (OLD.AGIMPM IS NOT NULL)) OR
((OLD.AGIMPM IS NULL) AND (NEW.AGIMPM IS NOT NULL))) THEN
BEGIN
FOR SELECT RTID FROM RECHTE WHERE RTOLDNAME = 'AGIMPM' ROWS 1 INTO :recht_id DO
BEGIN
IF (NEW.AGIMPM IS NULL) THEN
begin
zugriff = 0;
end else
begin
zugriff = NEW.AGIMPM;
end
SELECT COUNT(*) FROM RECHTE_ANWENDERGRUPPE WHERE RARTID = :recht_id AND RAAGID = NEW.AGID INTO :record_count;
IF (record_count > 0) THEN
BEGIN
UPDATE RECHTE_ANWENDERGRUPPE SET RAZUGRIFF = :zugriff WHERE RAAGID = NEW.AGID AND RARTID = :recht_id;
END ELSE
BEGIN
INSERT INTO RECHTE_ANWENDERGRUPPE (RARTID, RAAGID, RAZUGRIFF, RAZUGRIFFDATA) VALUES (:recht_id, NEW.AGID, :zugriff, null);
END
END
END
END
![]() ![]() ![]() |