【发布时间】:2021-08-14 17:05:16
【问题描述】:
我是 MySQL 和数据库的新手。我的数据库是一个电影院管理。我的一张表 SALE 的 PK 为 sale_id。 sale_id 中存储的值是 VARCHAR(19),它是 customer_id(FK - VARCHAR(7)) 和 sale_datetime(DATETIME) 列的组合。是否可以在 MySQL 工作台中创建基于表中其他列的主键值?
SALE 表是这样创建的:
CREATE TABLE `sale` (
`sale_id` varchar(19) NOT NULL,
`customer_id` varchar(7) NOT NULL,
`sale_datetime` datetime NOT NULL,
`payment_type` varchar(4) NOT NULL,
`ticket_quantity` int NOT NULL,
`sale_total` decimal(5,2) NOT NULL,
PRIMARY KEY (`sale_id`),
KEY `fk_sale_customer_id_idx` (`customer_id`),
CONSTRAINT `fk_sale_customer_id` FOREIGN KEY (`customer_id`) REFERENCES `customer`(`customer_id`))
在向此表添加数据时,我是否可以设置一些“约束”以根据 customer_id 和 sale_datetime 自动创建 sale_id?例如: 如果我在此表中添加一行,其中我的 customer_id 为 1111111,sales_date 为 2021-08-13 12:00:00,那么 sale_id 将自动设置为 1111111202108131200?
【问题讨论】:
-
没有生成的列不能是主键,请使用插入触发器生成它,请参阅dbfiddle.uk/…