Question

In PostgreSQL 8.4.13 why do I please get the syntax error

ERROR:  syntax error at or near "on" 
LINE: ... references balkan_users(id) check (id <> author) on delete ...

for the following 2 statements?

create table balkan_users (
        id varchar(32) primary key,
        first_name varchar(64) not null,
        last_name varchar(64),
        female boolean,
        avatar varchar(128),
        city varchar(64),
        mobile varchar(64),
        login timestamp default current_timestamp,
        logout timestamp,
        last_ip inet,
        vip timestamp,
        mail varchar(256),
        green integer,
        red integer,
        medals integer not null default 0
);

create table balkan_rep (
        rep_id serial,
        id varchar(32) references balkan_users(id) check (id <> author) on delete cascade,
        author varchar(32) references balkan_users(id) on delete cascade,
        author_ip inet,
        nice boolean,
        about varchar(256),
        stamp timestamp default current_timestamp,
        primary key(id, author);
);

I have also prepared an SQLFiddle to demo my problem.

Was it helpful?

Solution

ERROR: syntax error at or near "on":

Move the check after on delete cascade

id varchar(32) references balkan_users(id) on delete cascade check (id <> author),

ERROR: syntax error at end of input:

remove the semicolon at the last column primary key(id, author);

SQL Fiddle

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top