我创建了表格:
CREATE TABLE SALES_ORDER2_56 (
ORDERNO VARCHAR2 (6) CONSTRAINT SOpkey1 PRIMARY KEY CONSTRAINT SOcheck1 CHECK (ORDERNO LIKE 'O%'),
CLIENTNO VARCHAR2 (6) CONSTRAINT SOfkey1 REFERENCES CLIENT_MASTER2_56 (CLIENTNO),
ORDERDATE DATE CONSTRAINT SOnull1 NOT NULL,
DELYADDR VARCHAR2 (25),
SALESMANNO VARCHAR2 (6) CONSTRAINT SOfkey2 REFERENCES SALESMAN_MASTER2_56 (SALESMANNO),
DELYTYPE CHAR (1) DEFAULT 'F',
CONSTRAINT SOcheck2 CHECK (
DELYTYPE LIKE 'F'
OR DELYTYPE LIKE 'P'
),
BILLYN CHAR (1),
DELYDATE DATE,
ORDERSTATUS VARCHAR2 (10),
CHECK (
ORDERSTATUS IN (
'In Process',
'Fulfilled',
'BackOrder',
'Cancelled'
)
),
CONSTRAINT SOcheck3 CHECK (DELYDATE > ORDERDATE)
);
但每当我尝试运行时:
INSERT INTO SALES_ORDER2_56 (ORDERNO,CLIENTNO,ORDERDATE,SALESMANNO,DELYTYPE,BILLYN,DELYDATE,ORDERSTATUS)
VALUES('O19001','C00001','12-jun-04','S00001','F','N','20-jul-04','In Process');
它给了我: [Err] ORA-02291:违反了完整性约束(SCOTT.SOFKEY2) - 未找到父键
我尝试了很多次但是徒劳无功。非常感谢帮助。
答案 0 :(得分:2)
这个回答是对问题的原始版本的回应, 它已被编辑,使答案看起来无关紧要。
CHECK
的{{1}}约束要求ORDERSTATUS
是ORDERSTATUS
,In Progress
,Fulfilled
或BackOrder
之一,但在您的插入查询中,您使用违反约束的Cancelled
。我猜你打算用In Process
?
错误In Progress
表示SALESMANNO S00001在SALESMAN_MASTER2_56表中不存在