I tried it once more, now. There is no change in the behavior. I use the $$-notation to avoid double "\" and double "'". Also there is no syntax error in this statement. The constraint is a bad option because I have to log errors when I import a csv-file.
Thanks and regards Carsten Ungermann Am 09.09.2010 um 15:44 schrieb Szymon Guz: > > > On 9 September 2010 12:55, Ungermann Carsten > <carsten.ungerm...@ib-ungermann.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