Trine Banke Brenneche wrote:
> Hejsa
>
> Jeg bruger postgresql 7.4b1 og har lavet en tabel, der ser ud som følger:
>
> create table site(
> desid integer not null primary key,
> indhold varchar(15) not null check (indhold in ('Billeder','Lidt
> tekst','Mellem tekst','Meget tekst')),
> );
>
> Kan det passe, at man ikke kan have mellemrum eller bindestreg i de
> forskellige muligheder i check constrainten? Hvis man forsøger at indsætte
> Billeder i DBen går det fint, men hvis man forsøger med en af de andre
> muligheder går det galt.
>
> Insert-sætningen:
> insert into site(desid,indhold) values(9,'Lidt tekst');
>
> Fejlen:
> ERROR: ExecInsert: rejected due to CHECK constraint "site_indhold" on "site"
>
> Har noget en forklaring/løsning, vil jeg blive forfærdeligt glad!
>
> Med venlig hilsen
> Trine Banke Brenneche
>
>
Dit eksempel (uden det overskydende komma i create) virker fint for mig
med pg 7.3.3:
nnbasic=> create table site(desid integer not null primary key,indhold
varchar(15) not null check (indhold in ('Billeder','Lidt tekst','Mellem
tekst','Meget tekst')));
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
'site_pkey' for table 'site'
CREATE TABLE
nnbasic=> insert into site(desid,indhold) values(9,'Lidt tekst');
INSERT 39480576 1
nnbasic=> insert into site(desid,indhold) values(10,'Billeder');
INSERT 39480578 1
nnbasic=> select * from site;
desid | indhold
-------+------------
9 | Lidt tekst
10 | Billeder
(2 rows)
Meget niftyt egentligt, på den måde kan man jo repræsentere en ENUM i
postgresql, det var jeg ikke klar over at man kunne..
--
Mvh. Nezar Nielsen
http://fez.dk/