Re: Check constraints for varchar[] and varchar[][] columns in a table

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Alexander Farber <alexander(dot)farber(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Check constraints for varchar[] and varchar[][] columns in a table
Date: 2016-03-04 15:22:30
Message-ID: CAKFQuwaBTGYS7VNpLOh3ps3bwAyeM4H3XgQMozQARvkTLy6fzw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Fri, Mar 4, 2016 at 6:59 AM, Alexander Farber <alexander(dot)farber(at)gmail(dot)com
> wrote:

> Hello,
>
> for a Scrabble-like word game using PostgreSQL 9.5 as backend
> I am trying to add CHECK constraints to the VARCHAR arrays:
>
> CREATE TABLE words_games (
> gid SERIAL PRIMARY KEY,
> created timestamptz NOT NULL,
>
> player1 integer REFERENCES words_users(uid) ON DELETE CASCADE NOT
> NULL,
> player2 integer REFERENCES words_users(uid) ON DELETE CASCADE,
>
> played1 timestamptz,
> played2 timestamptz,
>
> hand1 varchar[7] NOT NULL CHECK (ALL(hand1) ~ '^[*A-Z]$'),
> hand2 varchar[7] NOT NULL CHECK (ALL(hand2) ~ '^[*A-Z]$'),
> pile varchar[116] NOT NULL CHECK (ALL(pile) ~ '^[*A-Z]$'),
>
> board varchar[15][15] NOT NULL CHECK (ALL(board) ~ '^[.A-Z]$'),
> style integer NOT NULL CHECK (1 <= style AND style <= 4)
> );
>
> but get syntax errors near "ALL"
>
> ERROR: syntax error at or near "ALL"
> LINE 8: hand1 varchar[7] NOT NULL CHECK (ALL(hand1) ~ '^[A-Z...
> ^
> - probably because that keyword is supposed to be on the right side?
>
> Could anyone please recommend a way to implement check constraints here?
>
>
​Google'd: postgresql regexp array matching
Found:
http://stackoverflow.com/questions/22098706/how-to-use-regular-expression-with-any-array-operator

The custom operator is the most direct solution - and meets this need quite
well - the array-taking function is overkill for this though has the
benefit of being more explicit and it can expanded upon to do things a
simple operator cannot.

David J.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2016-03-04 15:53:33 Re: Check constraints for varchar[] and varchar[][] columns in a table
Previous Message Alvaro Aguayo Garcia-Rada 2016-03-04 15:02:20 Slave-Master replication on top of BDR