0

在 PostgreSQL 8.4.13 中为什么会出现语法错误

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

对于以下 2 个语句?

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);
);

我还准备了一个 SQLFiddle来演示我的问题。

4

1 回答 1

3

错误:在“on”处或附近出现语法错误:

移动checkon delete cascade

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

错误:输入末尾的语法错误:

删除最后一列的分号primary key(id, author);

SQL小提琴

于 2013-07-14T11:08:32.080 回答