【发布时间】:2022-01-10 05:35:31
【问题描述】:
我已尝试使用此代码创建一个新的脚本表
CREATE TABLE orderheader(
Order_id NUMBER CONSTRAINT or_id NOT NULL CHECK(Order_id > 0),
Order_date DATE,
Order_customer VARCHAR2(10) REFERENCE customer(Cust_id),
Order_delivery NUMBER CONSTRAINT or_deli NOT NULL CHECK (Order_delivery > 0),
Order_total NUMBER CONSTRAINT or_to CHECK (Order_total > 0),
Order_vat NUMBER,
Order_payment NUMBER,
Order_completed DATE,
Order_credit CHAR(1) CONSTRAINT or_cre_ck CHECK (Order_credit IN ('Y', 'N')),
Order_takenby NUMBER CONSTRAINT or_tak CHECK(Order_takenby > 0) REFERENCE employee,
CONSTRAINT orhe_id_cus_deli PRIMARY KEY (Order_customer, Order_delivery, Order_id)
)
当我尝试执行此代码时,弹出此错误
Error computing plan for statement.
ORA-00907: missing right parenthesis
我到处寻找,并尝试一一消除约束。在我删除所有约束之前,所有结果都相同。可能还有其他我不知道的错误。这可能看起来很简单,因为我刚刚开始使用这种 SQL 编码。我有员工,并创建了客户。
【问题讨论】:
-
This 应该会有所帮助。
-
关于数据模型的注释。我希望一个名为 ORDER_HEADER 的表具有 ORDER_ID 的主键。也就是说,每个 ORDER_ID 都是唯一的。 CUSTOMER_ID/ORDER_NO 的复合主键是不寻常的:它可能代表业务(候选)键,但在多用户、大容量环境中实施时会导致复杂性。 CUSTOMER_ID/ORDER_NO/DELIVERY_NO 只是看起来不对。即使可以将一个订单拆分为多个交付,也应该在订单行级别进行跟踪吗?