> On Jun 10, 2016, at 1:01 PM, Ken Tanzer <[email protected]> wrote:
> 
> Hi.  I was hoping this list might be able to offer some 
> help/advice/suggestions/opinions about feasibility for something I want to 
> implement, namely converting Postgres constraints into PHP logic.  Here's the 
> context and explanation:
> 
> I work on a PHP web app using Postgres.  When possible, we try to build as 
> much logic as possible directly into the DB.  The app already automatically 
> reads NOT NULL and foreign key constraints from the DB, and enforces them 
> through the UI thus preventing people from getting ugly database errors.  It 
> doesn't do that with check constraints and table constraints though, which 
> means we either end up duplicating the constraint logic in PHP, or else 
> sometimes get lazy/expedient and only put the constraint into PHP.  Obviously 
> neither of those is ideal.
> 
> What would be ideal is for the app to handle those constraints automatically. 
>  It looks like I can pull them out (as SQL) from 
> information_schema.check_constraints, with the remaining issue being how to 
> make them usable in PHP.
> 
> I'm wondering if anyone has done this already, or if there is some kind of 
> library available for this purpose?
> 
> If not, and absent any better suggestions,

You could name the check constraints, catch the errors and use a client-side 
mapping between constraint name and a friendly error message for display in the 
web interface.

You could implement the checks in PHP in the database. 
https://public.commandprompt.com/projects/plphp/wiki

You could look at one of the existing SQL parsers implemented in PHP, and use 
those to parse the constraint to a tree from which you could easily pull PHP.

I'd go for that first one, if possible. Robust, and zero overhead in the happy 
path.

> I'm looking at trying to parse/search/replace.  This might well be imperfect, 
> and error-prone.  But if I can get something that at least works in a lot of 
> cases, that would help a lot.  So as a simple example, converting from

Cheers,
  Steve

-- 
Sent via pgsql-general mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to