From 115e9ad700dccca2461c05f68d756fb6e1e5c26d Mon Sep 17 00:00:00 2001 From: Clemens Schwaighofer Date: Fri, 15 Jul 2016 11:37:45 +0900 Subject: [PATCH] Add edit access automatic UID set psql function Trigger that gets called when edit access table is insert or update called. UID is set by removing all white spaces. Original name set is already checked for Alphanumeric with spaces and unique check. On Insert always set UID. On Update only set if UID is not set yet. --- .../database/function/edit_set_access_uid.sql | 28 +++++++++++++++++++ .../trigger/trg_set_edit_access_uid.sql | 4 +++ 2 files changed, 32 insertions(+) create mode 100644 4dev/database/function/edit_set_access_uid.sql create mode 100644 4dev/database/trigger/trg_set_edit_access_uid.sql diff --git a/4dev/database/function/edit_set_access_uid.sql b/4dev/database/function/edit_set_access_uid.sql new file mode 100644 index 00000000..37fd55a6 --- /dev/null +++ b/4dev/database/function/edit_set_access_uid.sql @@ -0,0 +1,28 @@ +-- add uid add for edit_access table + +CREATE OR REPLACE FUNCTION set_edit_access_uid() RETURNS TRIGGER AS +$$ + DECLARE + myrec RECORD; + v_uid VARCHAR; + BEGIN + -- skip if NEW.name is not set + IF NEW.name IS NOT NULL AND NEW.name <> '' THEN + -- use NEW.name as base, remove all spaces + -- name data is already unique, so we do not need to worry about this here + v_uid := REPLACE(NEW.name, ' ', ''); + IF TG_OP = 'INSERT' THEN + -- always set + NEW.uid := v_uid; + ELSIF TG_OP = 'UPDATE' THEN + -- check if not set, then set + SELECT INTO myrec t.* FROM edit_access t WHERE edit_access_id = NEW.edit_access_id; + IF FOUND THEN + NEW.uid := v_uid; + END IF; + END IF; + END IF; + RETURN NEW; + END; +$$ + LANGUAGE 'plpgsql'; diff --git a/4dev/database/trigger/trg_set_edit_access_uid.sql b/4dev/database/trigger/trg_set_edit_access_uid.sql new file mode 100644 index 00000000..b602a293 --- /dev/null +++ b/4dev/database/trigger/trg_set_edit_access_uid.sql @@ -0,0 +1,4 @@ +-- DROP TRIGGER trg_set_edit_access_uid ON edit_access; +CREATE TRIGGER trg_set_edit_access_uid +BEFORE INSERT OR UPDATE ON edit_access +FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid();