Skip to content

Instantly share code, notes, and snippets.

@Alxandr
Created January 15, 2025 10:57
Show Gist options
  • Save Alxandr/0ee98a558b0312ab5166e35ec0d1e77b to your computer and use it in GitHub Desktop.
Save Alxandr/0ee98a558b0312ab5166e35ec0d1e77b to your computer and use it in GitHub Desktop.
-- Sequence register.party_version_id_seq
CREATE SEQUENCE register.party_version_id_seq AS bigint;
-- Table: register.party
-- CREATE TABLE register.party (
-- uuid uuid NOT NULL,
-- id int8 NOT NULL,
-- party_type register.party_type NOT NULL,
-- name text NOT NULL,
-- person_identifier register.person_identifier NULL,
-- organization_identifier register.organization_identifier NULL,
-- created timestamptz NOT NULL,
-- updated timestamptz NOT NULL
-- );
ALTER TABLE register.party
ADD COLUMN is_deleted boolean NOT NULL DEFAULT false;
ALTER TABLE register.party
ADD COLUMN version_id bigint NOT NULL DEFAULT nextval('register.party_version_id_seq');
ALTER TABLE register.party
ADD CONSTRAINT uq_version_id UNIQUE (version_id);
-- CREATE TABLE register.party (
-- uuid uuid NOT NULL,
-- id int8 NOT NULL,
-- party_type register.party_type NOT NULL,
-- name text NOT NULL,
-- person_identifier register.person_identifier NULL,
-- organization_identifier register.organization_identifier NULL,
-- created timestamptz NOT NULL,
-- updated timestamptz NOT NULL,
-- is_deleted boolean NOT NULL DEFAULT false,
-- version_id int8 NOT NULL DEFAULT nextval('register.party_version_id_seq')
-- );
CREATE FUNCTION register.update_version_id()
RETURNS TRIGGER AS $BODY$
BEGIN
NEW.version_id = nextval('register.party_version_id_seq');
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER update_party_version_id
BEFORE UPDATE on register.party
FOR EACH ROW EXECUTE PROCEDURE register.update_version_id();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment