我在unix中执行sql查询。但我没有在查询中识别错误。
CREATE TABLE flights ( route_id NUMBER(10) NOT NULL,
depart_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
arrive_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
base_price_usd NUMBER(17,2) NOT NULL CHECK (base_price_usd > cast(0.0 as clob)::money),
status_id INTEGER NOT NULL,
PRIMARY KEY (route_id, depart_timestamp),
FOREIGN KEY (route_id) REFERENCES routes(route_id),
FOREIGN KEY (status_id) REFERENCES route_statuses(status_id) );
第2行的错误:
ORA-00905:缺少关键字
ORA-00907:缺少右括号
答案 0 :(得分:1)
好的,张贴为anwser:
1)使CHECK
约束CHECK base_price_usd > 0
2)TIMESTAMP WITH TIME ZONE
数据类型不能用作主键。
3){10}在Oracle 10g中实现了TIMESTAMP WITH TIME ZONE
。由于您使用的是Oracle 8,因此无法在那里运行。使用DATE
类型。
我猜你可以添加一列来存储TIME ZONE。它可以是VARCHAR2
并存储值,例如'GMT-6'或其他东西,但我认为不值得,因为最近版本的Oracle可以默认存储它。