Re: BUG #2390: check constraint
От | Stephan Szabo |
---|---|
Тема | Re: BUG #2390: check constraint |
Дата | |
Msg-id | 20060413100546.W83930@megazone.bigpanda.com обсуждение исходный текст |
Ответ на | Re: BUG #2390: check constraint (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-bugs |
On Thu, 13 Apr 2006, Tom Lane wrote: > Stephan Szabo <sszabo@megazone.bigpanda.com> writes: > > On Wed, 12 Apr 2006, Andreas Kretschmer wrote: > >> i want to add a check constraint like: > >> create table foo (i char(7) CHECK (i ~ '^[0-9]{6,7}$')); > >> > >> i doesn't work, but if works, if i change the type for i to varchar(7). > > > Well, the regex doesn't entirely make sense for char(n) data. It's not > > possible to have 6 characters between beginning and end because it's a > > fixed length 7 character string. If you try to insert '000000' into i, > > you're actually inserting '000000 ' which is invalid by the constraint. > > You could argue that since we consider trailing spaces not to be > semantically significant in char(n), it would be more consistent to > strip those spaces before performing the regex match. Possibly, although I'm not sure that the particulars of how we treat spaces in char(n) are precisely right either. :) AFAIR, the spec doesn't talk about stripping spaces, it talks about padding shorter values. That's usually the same, but for cases like this one, I think it's different.
В списке pgsql-bugs по дате отправления: