如何创建MySQL表并让totalprice列自动计算piece与price的乘积
实现MySQL表totalprice列自动计算的两种方法
方法1:使用生成列(Generated Column)
这是MySQL 5.7及以上版本的最优方案,直接在表结构中定义计算规则,无需额外逻辑维护。
创建表的SQL语句:
CREATE TABLE your_table_name ( id INT, piece INT, price DECIMAL(10,2), totalprice DECIMAL(10,2) GENERATED ALWAYS AS (piece * price) STORED );
GENERATED ALWAYS AS (piece * price)明确totalprice的计算规则为piece与price的乘积STORED表示该值会存储到磁盘,若选择VIRTUAL则仅在查询时实时计算,可根据业务场景选择
插入数据测试:
INSERT INTO your_table_name (id, piece, price) VALUES (101, 2, 10);
查询表数据即可看到totalprice已自动计算为20,与期望结果一致。
方法2:使用触发器(Trigger)
若你的MySQL版本低于5.7,不支持生成列,可以通过触发器实现自动计算。
先创建基础表:
CREATE TABLE your_table_name ( id INT, piece INT, price DECIMAL(10,2), totalprice DECIMAL(10,2) );
创建BEFORE INSERT触发器,在插入数据前自动赋值totalprice:
DELIMITER // CREATE TRIGGER calculate_totalprice_before_insert BEFORE INSERT ON your_table_name FOR EACH ROW BEGIN SET NEW.totalprice = NEW.piece * NEW.price; END // DELIMITER ;
- 触发器会在每次插入数据前触发,将新插入的
piece和price相乘后赋值给totalprice
插入测试数据:
INSERT INTO your_table_name (id, piece, price) VALUES (101, 2, 10);
查询后即可看到totalprice已自动填充为20。
内容的提问来源于stack exchange,提问作者Sarowar Jahan Sayid
相关产品推荐
相关产品推荐

