SQLiteStudio 自动插入值

SQLiteStudio automatically insert value

我有一个用 SQLiteStudio 创建的数据库,它有一个 products table 两列,item价格。它还有一个 sales table 和一个链接到 itemitem产品 中的列。我希望 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.

来源:Generated Columns

您可以简单地构建一个 视图 来稍微增强您的 table。

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

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

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