我想把价格和金额作为总插入到SQLite数据库。我已经尝试了下面的,但它没有工作。
INSERT INTO product (name, price, amount, total) VALUES (?, ?, ?, (price + amount))
5q4ezhmt1#
经典的方法是使用view来计算额外列的值,并查询它而不是基表:
sqlite> CREATE TABLE raw_product(name, price, amount); sqlite> CREATE VIEW product(name, price, amount, total) AS SELECT name, price, amount, price * amount FROM raw_product; sqlite> INSERT INTO raw_product VALUES ('Widget', 1.50, 100); sqlite> SELECT * FROM product; name price amount total ------ ----- ------ ----- Widget 1.5 100 150.0
一种较新的方法(从Sqlite 3.31开始)是使用generated column,它允许您在表本身中包含计算值,而不是将其 Package 在视图中:
sqlite> CREATE TABLE product(name, price, amount, total AS (price * amount)); sqlite> INSERT INTO product VALUES ('Widget', 1.50, 100); sqlite> SELECT * FROM product; name price amount total ------ ----- ------ ----- Widget 1.5 100 150.0
您可以使用一些选项来控制是在每次请求时计算该值,还是在数据库中实现该值并在给定行的其他字段被更新时对其进行更新。有关详细信息,请参阅链接的文档。
1条答案
按热度按时间5q4ezhmt1#
经典的方法是使用view来计算额外列的值,并查询它而不是基表:
一种较新的方法(从Sqlite 3.31开始)是使用generated column,它允许您在表本身中包含计算值,而不是将其 Package 在视图中:
您可以使用一些选项来控制是在每次请求时计算该值,还是在数据库中实现该值并在给定行的其他字段被更新时对其进行更新。有关详细信息,请参阅链接的文档。