我有一个用SQLiteStudio创建的数据库,它有一个products表,其中包含两个列,项目和价格。它还有一个sales表,其中有一个item列,该列链接到products中的item列。我希望products.price sales表也有一个列,其值自动设置为与从products.item列中选择的值相对应的行的值。如何定义sales.price列以便自动设置此值?
此外,products表中的价格可能会不时更改,但任何现有sales记录中列出的价格都不能在完成时更新。
发布于 2020-05-14 16:55:29
SQLite有在其他DBMSes中找到的生成的列(也称为表达式列)。但是您需要一个比较新的SQLite版本:
生成的列支持是用SQLite版本3.31.0 (2020-01-22)添加的。如果较早版本的SQLite试图读取其架构中包含生成列的数据库文件,则该早期版本将将生成的列语法视为错误,并报告数据库架构已损坏。
来源:生成列
您可以简单地构建一个视图来对您的表进行一些扩展。
你已经提到,价格会随着时间的推移而变化,这是完全正常的。因此,您至少有两个设计选择:
products中.您必须稍微重新设计您的模式。sales表中。这是出售时有效的价格。需要考虑的一点是:您可能需要在定价方面具有更大的灵活性:它可以取决于客户(基于数量的不同费率),也可以取决于具体情况。最终的价格可能是无数复杂计算的结果。
https://stackoverflow.com/questions/61801337
复制相似问题