Adrian come on 🤭
This is a reduced example.

The real usecase involves many tables with the bitemporal record


However I solved using a record type ...

Il ven 7 lug 2023, 01:20 Adrian Klaver <adrian.kla...@aklaver.com> ha
scritto:

> On 7/6/23 14:52, Lorusso Domenico wrote:
> > Hello guys,
> > In my db (version 15) I've defined a composite type with some domains
> >
> > CREATE DOMAIN my_feat.audit_record_jsonb_domain
> >      AS jsonb
> >      NOT NULL;
> >
> > ALTER DOMAIN my_feat.audit_record_jsonb_domain OWNER TO postgres;
> >
> > CREATE DOMAIN my_feat.boolean_true_domain
> >      AS boolean
> >      DEFAULT true
> >      NOT NULL;
> >
> > ALTER DOMAIN my_feat.boolean_true_domain OWNER TO postgres;
> > CREATE TYPE my_feat.bitemporal_record AS
> > (
> > user_ts_range tstzrange,
> > db_ts_range tstzrange,
> > has_future_record timestamp with time zone,
> > audit_record my_feat.audit_record_jsonb_domain,
> > is_valid my_feat.boolean_true_domain
> > );
> >
> > ALTER TYPE my_feat.bitemporal_record
> >      OWNER TO postgres;
> > So I've a table like that:
> > CREATE TABLE IF NOT EXISTS my_feat.try_bt_info
> > (
> >      id bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1
> > START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
> >      bt_info my_feat.bitemporal_record,
> >      CONSTRAINT try_bt_info_pk PRIMARY KEY (id)
> > )
>
> Seems a long way around to arrive at:
>
> CREATE TABLE IF NOT EXISTS my_feat.try_bt_info
> (
> id bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START
> 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ) PRIMARY KEY,
> user_ts_range tstzrange,
> db_ts_range tstzrange,
> has_future_record timestamp with time zone,
> is_valid boolean NOT NULL 't'
> );
>
>
> > --
> > Domenico L.
> >
> > per stupire mezz'ora basta un libro di storia,
> > io cercai di imparare la Treccani a memoria... [F.d.A.]
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>
>

Reply via email to