Thread:

From
Ana Claudia
Date:
Hello,

Usually, I use Oracle for develop database application. However, I
change my computer to Linux system (Mandrake 8) and I decide change database
to Postgresql.
In Oracle when I create a table where a colum is a char(n) or varchar(n), if
I try to insert in this table value bigger than n , I get an error. That
doesn't happen in Postgresql, if I try to insert a value bigger than n, it's
accept because trunk the value. I don't want that, if the value is bigger I
want an error. I created a check constraint with the function [char_length
(parameter) < (n+1)] but still not working. Can you help me to resolve this
problem? The version of Postgresql that I have is 7.1.2.

Best Regards,
Cláudia

Portugal

Re:

From
Bruce Momjian
Date:
This will be fixed in the 7.2 release.

> Hello,
>
> Usually, I use Oracle for develop database application. However, I
> change my computer to Linux system (Mandrake 8) and I decide change database
> to Postgresql.
> In Oracle when I create a table where a colum is a char(n) or varchar(n), if
> I try to insert in this table value bigger than n , I get an error. That
> doesn't happen in Postgresql, if I try to insert a value bigger than n, it's
> accept because trunk the value. I don't want that, if the value is bigger I
> want an error. I created a check constraint with the function [char_length
> (parameter) < (n+1)] but still not working. Can you help me to resolve this
> problem? The version of Postgresql that I have is 7.1.2.
>
> Best Regards,
> Cl?udia
>
> Portugal
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Re:

From
Stephan Szabo
Date:
On Mon, 24 Sep 2001, Ana Claudia wrote:

> Hello,
>
> Usually, I use Oracle for develop database application. However, I
> change my computer to Linux system (Mandrake 8) and I decide change database
> to Postgresql.
> In Oracle when I create a table where a colum is a char(n) or varchar(n), if
> I try to insert in this table value bigger than n , I get an error. That
> doesn't happen in Postgresql, if I try to insert a value bigger than n, it's
> accept because trunk the value. I don't want that, if the value is bigger I
> want an error. I created a check constraint with the function [char_length
> (parameter) < (n+1)] but still not working. Can you help me to resolve this
> problem? The version of Postgresql that I have is 7.1.2.

I believe this will be fixed in the upcoming 7.2 release.  The reason the
constraint doesn't work is probably that the truncation happens before the
check.