mysql 家庭作业帮助(唯一约束)

ccrfmcuu  于 2023-03-07  发布在  Mysql
关注(0)|答案(2)|浏览(111)

我在作业上遇到了一些麻烦我需要弄明白。
我有4张table:
1:x1个月1个月2:order3:四个
它们由外键链接。
我需要做一个唯一的约束,这样一个客户每天只能下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;
wyyhbhjk

wyyhbhjk1#

alter table order add unique index(orderdate, COSTUMERNR);
epfja78i

epfja78i2#

如果能够将datetime列拆分为date列和time列,则可以使用一个简单的约束:

CREATE TABLE ORDER (
   ORDERNR INT NOT NULL,
   ORDERDATE DATE,
   ORDERTIME TIME,
    ...
CONSTRAINT [UniqueOrder] UNIQUE NONCLUSTERED
(
   COSTUMERNR, ORDERDATE
)

相关问题