我在作业上遇到了一些麻烦我需要弄明白。
我有4张table:
1:x1个月1个月2:order
3:四个
它们由外键链接。
我需要做一个唯一的约束,这样一个客户每天只能下1个唯一的订单。如果同一个客户想在同一天下更多的订单,就必须写在已经存在的订单上。
表格:Customer
:
CREATE TABLE CUSTOMER
(
CUSTOMERNR INT NOT NULL,
NAME VARCHAR(256),
CITY VARCHAR(256),
PRIMARY KEY (CUSTOMERNR)
) ENGINE=INNODB;
Order
:
CREATE TABLE ORDER
(
ORDERNR INT NOT NULL,
ORDERDATE DATETIME,
PRIMARY KEY (ORDERNR)),
FOREIGN KEY (CUSTOMERNR) REFERENCES CUSTOMER(CUSTOMERNR)
ON DELETE CASCADE
) ENGINE=INNODB;
OrderedProduct
:
CREATE TABLE ORDEREDPRODUCT
(
OPNR INT NOT NULL,
AMOUNT INT,
FOREIGN KEY (ORDERNR) REFERENCES ORDER(ORDERNR),
FOREIGN KEY (PRODUCTCODE) REFERENCES PRODUCT (PRODUCTCODE)
ON DELETE CASCADE,
CHECK (AMOUNT => 0)
) ENGINE=INNODB;
Product
:
CREATE TABLE PRODUCT
(
PRODUCTCODE INT NOT NULL,
NAME VARCHAR(256),
TYPE VARCHAR(256),
PRICE FLOAT,
STOCK INT,
PRIMARY KEY (PRODUCTCODE),
CHECK (AMOUNT => 0)
) ENGINE=INNODB;
2条答案
按热度按时间wyyhbhjk1#
epfja78i2#
如果能够将datetime列拆分为date列和time列,则可以使用一个简单的约束: