Re: making a rule and know when it is violated - Mailing list pgsql-jdbc

From Kris Jurka
Subject Re: making a rule and know when it is violated
Date
Msg-id Pine.BSO.4.56.0502211107470.29249@leary.csoft.net
Whole thread Raw
In response to making a rule and know when it is violated  ("Nico" <nicohmail-postgresql@yahoo.com>)
List pgsql-jdbc

On Mon, 21 Feb 2005, Nico wrote:

> Hello, I want to make a rule in phpPgAdmin(PostgreSQL 7.3.8-RH ). Then I
> want to intercept any violation on that rule in java. Here is the table
> creation code: CREATE TABLE "tblUser" (
>     "UserID" serial NOT NULL,
>     "UserName" character varying(50) NOT NULL,
>     "UserPass" character varying(50) NOT NULL,
>     "UserRoleID" integer DEFAULT 3 NOT NULL
> );
> Now it's imperative that the field UserRoleID has maximum one record that
> contains the integer 1. Possible other values are 2 and 3. They are allowed
> to exist in more than one record.

Enforcing this constraint in the database can be done with a partial
unique index:

CREATE UNIQUE INDEX myi ON mytable(mycol) WHERE mycol = 1;

> After that I need to know in java how to know when a violation of this rule
> occurs.

The server will report a violation of this with an
SQLException.getSQLState value indicating a duplicate key exception.  This
is no different than any other duplicate key exception so there is no real
way to tie it back to what particular constrain is violated without trying
to look in the actual message text.  Actually re-reading the above you
mention 7.3.X which does not support SQLState values (this is a 7.4+
feature), so you're only feedback will be the message text itself.

Kris Jurka

pgsql-jdbc by date:

Previous
From: "Nico"
Date:
Subject: making a rule and know when it is violated
Next
From: Guillaume Cottenceau
Date:
Subject: Re: making a rule and know when it is violated