SQLiteStudio 自动插入值
SQLiteStudio automatically insert value
我有一个用 SQLiteStudio 创建的数据库,它有一个 products table 两列,item 和 价格。它还有一个 sales table 和一个链接到 item 的 item 列产品 中的列。我希望 sales table 也有一个 price 列,其值自动设置为 [=22] =]products.price 行对应于从 products.item[=32= 中选择的值] 柱子。我将如何定义 sales.price 列以便自动设置此值?
此外,产品 table 中的价格可能会不时更改,但任何现有 销售 完成后不得更新记录。
SQLite 有生成的列(也称为表达式列),在其他 DBMS 中也有。但是你需要一个相当新的 SQLite 版本:
Generated column support was added with SQLite version 3.31.0
(2020-01-22). If an earlier version of SQLite attempts to read a
database file that contains a generated column in its schema, then
that earlier version will perceive the generated column syntax as an
error and will report that the database schema is corrupt.
您可以简单地构建一个 视图 来稍微增强您的 table。
您提到价格会随时间变化,这是完全正常的。所以你至少有两个设计选择:
- 添加一个额外的 table 来存储 价格历史记录 ,其中 table 您存储产品 ID、价格、开始日期和结束日期(作为例子)。然后你加入它与其他 tables。有效价格以订单日期为准。这也意味着价格将存储在 table 而不是
products
中...您必须稍微重新设计架构。
- 另一种选择是将产品的单价存储在
sales
table 中作为历史值。这是成交时的有效价格。
需要考虑的一件事:您可能需要更灵活的定价:它可能取决于客户(根据数量不同的费率)以及具体情况。最终价格可能是经过无数次复杂计算的结果。
我有一个用 SQLiteStudio 创建的数据库,它有一个 products table 两列,item 和 价格。它还有一个 sales table 和一个链接到 item 的 item 列产品 中的列。我希望 sales table 也有一个 price 列,其值自动设置为 [=22] =]products.price 行对应于从 products.item[=32= 中选择的值] 柱子。我将如何定义 sales.price 列以便自动设置此值?
此外,产品 table 中的价格可能会不时更改,但任何现有 销售 完成后不得更新记录。
SQLite 有生成的列(也称为表达式列),在其他 DBMS 中也有。但是你需要一个相当新的 SQLite 版本:
Generated column support was added with SQLite version 3.31.0 (2020-01-22). If an earlier version of SQLite attempts to read a database file that contains a generated column in its schema, then that earlier version will perceive the generated column syntax as an error and will report that the database schema is corrupt.
您可以简单地构建一个 视图 来稍微增强您的 table。
您提到价格会随时间变化,这是完全正常的。所以你至少有两个设计选择:
- 添加一个额外的 table 来存储 价格历史记录 ,其中 table 您存储产品 ID、价格、开始日期和结束日期(作为例子)。然后你加入它与其他 tables。有效价格以订单日期为准。这也意味着价格将存储在 table 而不是
products
中...您必须稍微重新设计架构。 - 另一种选择是将产品的单价存储在
sales
table 中作为历史值。这是成交时的有效价格。
需要考虑的一件事:您可能需要更灵活的定价:它可能取决于客户(根据数量不同的费率)以及具体情况。最终价格可能是经过无数次复杂计算的结果。