SQL 完整性约束主键和外键
SQL integrity constraints primary and foreign keys
我正在按照一些示例进行操作,下面的示例应该有效,但我遇到了一些错误。谁能告诉我哪里出了问题?
/* Data Definition */
CREATE TABLE CUSTOMERS
(CUST_NO INTEGER ,
CUST_NAME VARCHAR(40) ,
STREET VARCHAR(40) ,
TOWN VARCHAR(40) ,
POSTCODE INTEGER ,
CR_LIMIT INTEGER ,
CURR_BALANCE INTEGER ,
PRIMARY KEY (CUST_NO)
);
CREATE TABLE PRODUCTS
(PROD_COD VARCHAR(10) ,
DESCRIPTION VARCHAR(50) ,
PROD_GROUP CHAR(1) ,
LIST_PRICE INTEGER ,
QTY_ON_HAND INTEGER ,
REMAKE_LEVEL INTEGER ,
REMAKE_QTY INTEGER ,
PRIMARY KEY (PROD_COD)
);
CREATE TABLE ORDERS
(ORDER_NO INTEGER ,
ORDER_DATE DATE ,
CUST_NO INTEGER ,
PRIMARY KEY (ORDER_NO),
FOREIGN KEY (CUST_NO) REFERENCES CUSTOMERS(CUST_NO)
);
CREATE TABLE ORDER_DETAILS
(ORDER_NO INTEGER ,
PROD_COD VARCHAR(10) ,
ORDER_QTY INTEGER ,
ORDER_PRICE INTEGER ,
PRIMARY KEY (ORDER_NO, PROD_COD),
FOREIGN KEY (ORDER_NO) REFERENCES ORDERS(ORDER_NO),
FOREIGN KEY (PROD_COD) REFERENCES PRODUCTS(PROD_COD)
);
当我尝试向表中插入值时出现以下错误:
我无法解决,因为我似乎引用了正确的东西,但显然我不是。
是复合主键的原因吗?这似乎在示例中有效。
我正在使用 Oracle SQL Developer 4.
您似乎正在尝试为不存在的客户插入订单。 cust_no = 13144 的客户有一行吗?
我正在按照一些示例进行操作,下面的示例应该有效,但我遇到了一些错误。谁能告诉我哪里出了问题?
/* Data Definition */
CREATE TABLE CUSTOMERS
(CUST_NO INTEGER ,
CUST_NAME VARCHAR(40) ,
STREET VARCHAR(40) ,
TOWN VARCHAR(40) ,
POSTCODE INTEGER ,
CR_LIMIT INTEGER ,
CURR_BALANCE INTEGER ,
PRIMARY KEY (CUST_NO)
);
CREATE TABLE PRODUCTS
(PROD_COD VARCHAR(10) ,
DESCRIPTION VARCHAR(50) ,
PROD_GROUP CHAR(1) ,
LIST_PRICE INTEGER ,
QTY_ON_HAND INTEGER ,
REMAKE_LEVEL INTEGER ,
REMAKE_QTY INTEGER ,
PRIMARY KEY (PROD_COD)
);
CREATE TABLE ORDERS
(ORDER_NO INTEGER ,
ORDER_DATE DATE ,
CUST_NO INTEGER ,
PRIMARY KEY (ORDER_NO),
FOREIGN KEY (CUST_NO) REFERENCES CUSTOMERS(CUST_NO)
);
CREATE TABLE ORDER_DETAILS
(ORDER_NO INTEGER ,
PROD_COD VARCHAR(10) ,
ORDER_QTY INTEGER ,
ORDER_PRICE INTEGER ,
PRIMARY KEY (ORDER_NO, PROD_COD),
FOREIGN KEY (ORDER_NO) REFERENCES ORDERS(ORDER_NO),
FOREIGN KEY (PROD_COD) REFERENCES PRODUCTS(PROD_COD)
);
当我尝试向表中插入值时出现以下错误:
我无法解决,因为我似乎引用了正确的东西,但显然我不是。
是复合主键的原因吗?这似乎在示例中有效。
我正在使用 Oracle SQL Developer 4.
您似乎正在尝试为不存在的客户插入订单。 cust_no = 13144 的客户有一行吗?