我有一个使用 SQLiteStudio 创建的数据库,该数据库有一个包含两列item和price的products表。它还有一个sales表,其中的item列链接到products中的item列。我希望sales表也有一个price列,其值自动设置为products的值。与从产品中选择的值相对应的价格行。项目列。我将如何定义销售。价格列,以便自动设置此值?
此外,产品表中的价格可能会不时更改,但任何现有销售记录中列出的价格在此完成后不得更新。
我有一个使用 SQLiteStudio 创建的数据库,该数据库有一个包含两列item和price的products表。它还有一个sales表,其中的item列链接到products中的item列。我希望sales表也有一个price列,其值自动设置为products的值。与从产品中选择的值相对应的价格行。项目列。我将如何定义销售。价格列,以便自动设置此值?
此外,产品表中的价格可能会不时更改,但任何现有销售记录中列出的价格在此完成后不得更新。
SQLite生成了在其他 DBMS 中可以找到的列(也称为表达式列)。但是你需要一个相当新的 SQLite 版本:
SQLite 版本 3.31.0 (2020-01-22) 添加了生成的列支持。如果早期版本的 SQLite 尝试读取在其架构中包含生成列的数据库文件,则该早期版本会将生成的列语法视为错误并报告数据库架构已损坏。
来源: 生成的列
您可以简单地构建一个视图来稍微增加您的表格。
您提到价格会随着时间的推移而变化,这是完全正常的。所以你至少有两种设计选择:
products
......您必须稍微重新设计您的架构。sales
作为历史值存储在表中。这是出售时有效的价格。需要考虑的一件事:您可能需要更大的定价灵活性:它可能取决于客户(基于数量的不同费率)以及特定情况。最终价格可能是无数复杂计算的结果。