0

我有一个使用 SQLiteStudio 创建的数据库,该数据库有一个包含两列itemprice的products表。它还有一个sales表,其中的item列链接到products中的item列。我希望sales表也有一个price列,其值自动设置为products的值。与从产品中选择的值相对应的价格行。项目列。我将如何定义销售价格列,以便自动设置此值?

此外,产品表中的价格可能会不时更改,但任何现有销售记录中列出的价格在此完成后不得更新。

4

1 回答 1

0

SQLite生成了在其他 DBMS 中可以找到的列(也称为表达式列)。但是你需要一个相当新的 SQLite 版本:

SQLite 版本 3.31.0 (2020-01-22) 添加了生成的列支持。如果早期版本的 SQLite 尝试读取在其架构中包含生成列的数据库文件,则该早期版本会将生成的列语法视为错误并报告数据库架构已损坏。

来源: 生成的列

您可以简单地构建一个视图来稍微增加您的表格。

您提到价格会随着时间的推移而变化,这是完全正常的。所以你至少有两种设计选择:

  1. 添加一个附加表来存储价格历史记录,在该表中存储产品 ID、价格、开始日期和结束日期(例如)。然后将它与其他表连接起来。有效价格以订货日为准。这也意味着价格将存储在该表中,而不是products......您必须稍微重新设计您的架构。
  2. 另一种选择是将产品的单价sales作为历史值存储在表中。这是出售时有效的价格。

需要考虑的一件事:您可能需要更大的定价灵活性:它可能取决于客户(基于数量的不同费率)以及特定情况。最终价格可能是无数复杂计算的结果。

于 2020-05-14T16:55:29.693 回答