Trigger Previous topic Chapter index Next topic

AG_AFTER_UP_UPDATE_RECHTE

 

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

 

     Previous topic Chapter index Next topic