| From: | Szymon Guz <mabewlun(at)gmail(dot)com> |
|---|---|
| To: | Ungermann Carsten <carsten(dot)ungermann(at)ib-ungermann(dot)de> |
| Cc: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: Regular expression in an if-statement will not work |
| Date: | 2010-09-09 13:44:56 |
| Message-ID: | AANLkTi=R+Z7T_hT54Q2JQybp_mRe4iMV1Bid+jsiJ4ux@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On 9 September 2010 12:55, Ungermann Carsten <
carsten(dot)ungermann(at)ib-ungermann(dot)de> wrote:
> Dear postgres list,
>
> I need to verify the value of a column by a regular expression in an
> if-statement before insert or update. It should be a one to three digit
> value. I wrote a trigger and a trigger function. In the trigger function I
> want to use the following if-statement to verify the value:
>
> IF new.value !~ E'^\d{1,3}$' THEN RAISE EXCEPTION '...some text...'; END
> IF;
>
> It will not work! Why?
>
>
How about this:
IF new.value !~ E'^\\d{1,3}$' THEN
Or if you only want to check the 3digit value, without any trigger, IMHO
this is much simpler:
alter table x add constraint check_is_3_digit check ( value ~ E'^\\d{3}$' );
regards
Szymon Guz
| From | Date | Subject | |
|---|---|---|---|
| Next Message | tamanna madaan | 2010-09-09 13:55:01 | Re: error while autovacuuming |
| Previous Message | Thom Brown | 2010-09-09 12:13:37 | Re: NOT IN vs. OUTER JOIN and NOT NULL |