On Mon, Aug 22, 2022 at 12:59 PM sivapostg...@yahoo.com <
sivapostg...@yahoo.com> wrote:

> Hello,
> Using PG 11.4
>
> We populate constraint string dynamically and add it to the table with
> alter table command.  It gets added, but without the required brackets.
> What we build is
> ALTER TABLE public.tx_barcode_stock
> ADD CONSTRAINT "tx_barcode_stock_CK1" CHECK
> ( (branchcode = '1'::bpchar  and barcodeitem = 'Y'::bpchar and
> closingstock >= 0::numeric)  Or (branchcode = '1' and barcodeitem =
> 'N'::bpchar and closingstock >= 0::numeric )  Or (branchcode = '2'::bpchar
> and barcodeitem = 'Y'::bpchar and closingstock >= 0::numeric)  Or
> (branchcode = '2' and  barcodeitem = 'N'::bpchar and closingstock >=
> 0::numeric ) ) NOT VALID;
>
> After creation, when we check what we find is  [ in PgAdmin ]
> ALTER TABLE public.tx_barcode_stock
>     ADD CONSTRAINT "tx_barcode_stock_CK1" CHECK (branchcode::bpchar =
> '1'::bpchar AND barcodeitem = 'Y'::bpchar AND closingstock >= 0::numeric OR
> branchcode::text = '1'::text AND barcodeitem = 'N'::bpchar AND closingstock
> >= 0::numeric OR branchcode::bpchar = '2'::bpchar AND barcodeitem =
> 'Y'::bpchar AND closingstock >= 0::numeric OR branchcode::text = '2'::text
> AND barcodeitem = 'N'::bpchar AND closingstock >= 0::numeric)
>     NOT VALID;
>
> We have only one bracket, in the final updated one.
>
> Since there are AND and OR conditions, without brackets the whole
> conditions becomes useless.
>
> How to create a constraint like the above one, with braces in tact ?   Or
> any other way that we can implement a check constraint as above?
>
> Happiness Always
> BKR Sivaprakash
>
>
I guess it's because  pgadmin uses pg_get_constraintdef ( *constraint* oid [,
*pretty* boolean ] ) pretty is true.
if you use pg_get_constraintdef ( *constraint* oid *,false* )  you will see
more braces.


-- 
 I recommend David Deutsch's <<The Beginning of Infinity>>

  Jian

Reply via email to