cr_trigger_func_rechte.sql
1 KB
-- Trigger Funktionen zu Rechten --
-- [
create function create_valid_rechte_mask()
returns TRIGGER as '
DECLARE
err_msg text;
new_len int4;
old_len int4;
dummy RECORD;
sel text;
BEGIN
IF TG_OP <> ''UPDATE'' AND TG_OP <> ''INSERT'' THEN
err_msg := TG_NAME || '': called for wrong action '' || TG_OP;
RAISE EXCEPTION ''%'', err_msg;
END IF;
new_len := bit_length(NEW.maske);
old_len := fibu.konto_typ_min_len();
IF new_len < old_len THEN
NEW.maske := bit_set_len(NEW.maske, old_len);
END IF;
IF old_len < new_len THEN
EXECUTE ''update fibu.konten_typen set konto_typ=konto_typ'' ||
''::BIT('' || new_len || '')>>'' || new_len-old_len;
END IF;
RETURN NEW;
END;
' language 'plpgsql';
-- create function on_ref_count_null_del_konto()