From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | mauricio pullabuestan <jmauriciopb(at)yahoo(dot)es> |
Cc: | Postgres ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Evitar overlaps Indice único o CONSTRAINT EXCLUDE con campos varchar, tstzrange |
Date: | 2019-12-18 18:24:18 |
Message-ID: | 20191218182418.GA22433@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
mauricio pullabuestan escribió:
> CREATE TABLE permiso
> (
> numero_permiso integer NOT NULL,
> director_id character varying(5),
> dependiente_id character varying(5),
> jornada_id character varying(2),
> permiso_periodo tstzrange,
> observaciones character varying(100),
> activo boolean,
> CONSTRAINT pk_permisos PRIMARY KEY ( numero_permiso)
> );
>
>
> Necesito evitar que se solapen los permisos de dependiente_id, permiso_periodo.
>
>
> Al ser 2 campos de distintos tipos no se si se puede y como hacer un exclude o un indice unico con estos 2 campos, de poder cual seria la mejor opción, si no se puede como podría evita overlaps
Hola, esto en Postgres se llama "restricción de exclusión" (exclusion
constraint en inglés); necesitas un índice gist con soporte para los
tipos en cuestión. Algo así
create extension btree_gist; -- esto es para el operador = en varchar
CREATE TABLE permiso (
numero_permiso integer NOT NULL,
director_id character varying(5),
dependiente_id character varying(5),
jornada_id character varying(2),
permiso_periodo tstzrange,
observaciones character varying(100),
activo boolean,
CONSTRAINT pk_permisos PRIMARY KEY ( numero_permiso),
constraint no_traslape exclude using gist (dependiente_id with =, permiso_periodo with &&));
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | mauricio pullabuestan | 2019-12-19 17:20:45 | Re: Evitar overlaps Indice único o CONSTRAINT EXCLUDE con campos varchar, tstzrange |
Previous Message | mauricio pullabuestan | 2019-12-18 18:00:52 | Evitar overlaps Indice único o CONSTRAINT EXCLUDE con campos varchar, tstzrange |