Informix - 无法找到语法错​​误

时间:2018-02-12 08:06:43

标签: sql informix squirrel-sql

这可能是一个愚蠢的错误,但我是Informix的新手,我似乎无法弄清楚为什么我的CREATE TABLE语句都不会运行。我在所有CREATE TABLE语句中都遇到语法错误。

CREATE TABLE customer(
store_num INTEGER NOT NULL,
store_name VARCHAR(20) NOT NULL,
addr VARCHAR(20),
addr2 VARCHAR(20),
city VARCHAR(15),
state VARCHAR(2),
zip-code VARCHAR(5),
contact_name VARCHAR(30),
phone VARCHAR(18),
CONSTRAINT cust_pk PRIMARY KEY(store_num)
);

create table orders(
order_num INTEGER NOT NULL,
order_date DATE NOT NULL,
store_num INTEGER NOT NULL,
fac_code CHAR(3),
ship_instr CHAR(10),
promo CHAR(1) NOT NULL,
CONSTRAINT orders_pk PRIMARY KEY(order_num)
); 

create table factory(
fac_code CHAR(3) NOT NULL,
fac_name CHAR(15) NOT NULL,
CONSTRAINT fac_pk PRIMARY KEY(fac_code)
);

create table stock(
stock_num INTEGER NOT NULL,
fac_code CHAR(3) NOT NULL,
description CHAR(15) NOT NULL,
reg_price DECIMAL(8,2) NOT NULL,
promo_price DECIMAL(8,2),
price_updated DATE,
unit CHAR(4) NOT NULL,
CONSTRAINT stock_pk PRIMARY KEY(stock_num)
);

create table items(
order_num INTEGER NOT NULL,
stock_num INTEGER NOT NULL,
quantity SMALLINT NOT NULL,
price DECIMAL(8,2) NOT NULL,
CONSTRAINT items_pk PRIMARY KEY(order_num, stock_num)
);

create table state(
state_code CHAR(2) NOT NULL,
state_name CHAR(15) NOT NULL,
CONSTRAINT state_pk PRIMARY KEY(state_code)
);

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用客户的字段zip_code代替zip-code

答案 1 :(得分:2)

由于我不明白的原因,Informix在约束后需要约束名称,而标准SQL在约束之前需要约束名称。

因此,除了将zip-code更改为zip_code(正如daniel.shih中的answer所指出)之外,您还需要:

CREATE TABLE customer(
    store_num     INTEGER NOT NULL,
    store_name    VARCHAR(20) NOT NULL,
    addr          VARCHAR(20),
    addr2         VARCHAR(20),
    city          VARCHAR(15),
    state         VARCHAR(2),
    zip_code      VARCHAR(5),
    contact_name  VARCHAR(30),
    phone         VARCHAR(18),
    PRIMARY KEY(store_num) CONSTRAINT cust_pk
);