Postgresql:“。”或附近的语法错误。

时间:2016-07-06 09:16:14

标签: sql postgresql

为什么我在“。”或附近会出现语法错误?

CREATE TABLE myschema.products (
    product_no SERIAL PRIMARY KEY,
    date date,
    group_number INTEGER,
    CHECK (myschema.products >1 AND myschema.products <1001)
);

CREATE TABLE myschema.orders (
    order_id SERIAL PRIMARY KEY,
    name varchar,
    schedule integer[][]
);

CREATE TABLE myschema.tabletime (
    id SERIAL, 
    products INTEGER, 
    orders INTEGER, 
    CONSTRAINT pkey PRIMARY KEY (id),
    CONSTRAINT integrity CHECK (products IS NOT NULL
                                            AND orders IS NOT NULL),
    CONSTRAINT products_exists FOREIGN KEY(products)
                         REFERENCES myschema.products(product_no),
    CONSTRAINT orders_exists FOREIGN KEY(orders)
                         REFERENCES myschema.orders(order_id)
                         );

1 个答案:

答案 0 :(得分:0)

错误出现在以下行:

CHECK (myschema.products >1 AND myschema.products <1001)

您不能在支票内使用关系的名称,只能使用列的名称。 manual说:

  

目前,CHECK表达式不能包含子查询,也不能引用当前行的列以外的变量。