sql

sql


CREATE OR REPLACE FUNCTION eligible_entities_onchange()

RETURNS TRIGGER AS $eligible_entities$

BEGIN

IF (TG_OP = 'DELETE') THEN

DELETE FROM eligible_entities

WHERE old.index_request.id = eligible_entities.id ;

ELSIF (TG_OP = 'UPDATE') THEN

--1) delete

DELETE FROM eligible_entities

WHERE old.index_request.id = eligible_entities.id ;

--2) insert

INSERT INTO eligible_entities 

  SELECT 

    new.id

    , regexp_split_to_table(new.index_request.eligible_roles, E';;')

    , null as eligible_groups

    , null as eligible_employees

        , null as assignees

        , null as candidates

      FROM index_request;

       

INSERT INTO eligible_entities 

  SELECT 

    new.id

    , null as eligible_roles

    , regexp_split_to_table(new.index_request.eligible_groups, E';;')

    , null as eligible_employees

        , null as assignees

        , null as candidates

      FROM index_request;


INSERT INTO eligible_entities 

  SELECT 

    new.id

    , null as eligible_roles

    , null as eligible_groups

    , regexp_split_to_table(new.index_request.eligible_employees, E';;')

        , null as assignees

        , null as candidates

      FROM index_request;

       

INSERT INTO eligible_entities 

  SELECT 

    new.id

    , null as eligible_roles

    , null as eligible_groups

    , null as eligible_employees

        , regexp_split_to_table(new.index_request.assignees, E';;')

        , null as candidates

      FROM index_request;

       

INSERT INTO eligible_entities 

  SELECT 

    new.id

    , null as eligible_roles

    , null as eligible_groups

    , null as eligible_employees

        , null as assignees

        , regexp_split_to_table(new.index_request.candidates, E';;')

      FROM index_request;

    /*(id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, regexp_split_to_table(new.index_request.eligible_roles, E';;'), null, null, null, null);*/

/*INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, null, regexp_split_to_table(new.index_request.eligible_groups, E';;'), null, null, null);

INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, null, null, regexp_split_to_table(new.index_request.eligible_employees, E';;'), null, null);

INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, null, null, null, regexp_split_to_table(new.index_request.assignees, E';;'), null);

INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, null, null, null, null, regexp_split_to_table(new.index_request.candidates, E';;'));*/

ELSIF (TG_OP = 'INSERT') THEN

  INSERT INTO eligible_entities 

  SELECT 

    new.id

    , regexp_split_to_table(new.index_request.eligible_roles, E';;')

    , null as eligible_groups

    , null as eligible_employees

        , null as assignees

        , null as candidates

      FROM index_request;

       

INSERT INTO eligible_entities 

  SELECT 

    new.id

    , null as eligible_roles

    , regexp_split_to_table(new.index_request.eligible_groups, E';;')

    , null as eligible_employees

        , null as assignees

        , null as candidates

      FROM index_request;


INSERT INTO eligible_entities 

  SELECT 

    new.id

    , null as eligible_roles

    , null as eligible_groups

    , regexp_split_to_table(new.index_request.eligible_employees, E';;')

        , null as assignees

        , null as candidates

      FROM index_request;

       

INSERT INTO eligible_entities 

  SELECT 

    new.id

    , null as eligible_roles

    , null as eligible_groups

    , null as eligible_employees

        , regexp_split_to_table(new.index_request.assignees, E';;')

        , null as candidates

      FROM index_request;

       

INSERT INTO eligible_entities 

  SELECT 

    new.id

    , null as eligible_roles

    , null as eligible_groups

    , null as eligible_employees

        , null as assignees

        , regexp_split_to_table(new.index_request.candidates, E';;')

      FROM index_request;

/*INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, regexp_split_to_table(new.index_request.eligible_roles, E';;'), null, null, null, null);

INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, null, regexp_split_to_table(new.index_request.eligible_groups, E';;'), null, null, null);

INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, null, null, regexp_split_to_table(new.index_request.eligible_employees, E';;'), null, null);

INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, null, null, null, regexp_split_to_table(new.index_request.assignees, E';;'), null);

INSERT INTO eligible_entities (id, eligible_roles, eligible_groups, eligible_employees, assignees, candidates)

VALUES (new.id, null, null, null, null, regexp_split_to_table(new.index_request.candidates, E';;'));*/

END IF;

END;


$eligible_entities$ LANGUAGE plpgsql

;

Report Page