【发布时间】:2011-10-14 21:22:46
【问题描述】:
我想要达到的目标:
我有一个表,表示每个 ID 的 ID 和 Credits。
我想将每个 ID 评为 rate(ID)=Credit(ID)/sum(Credit(ID)) 总和超过所有 ID
我将非常频繁地更新表格,并希望通过创建另一列并将这个总和存储在表格中(比如sigmaID)来方便使用sum(Credit(ID)),这所有行的值应该总是完全相同强>.
每当我更改 ID 的 Credit(比如加 100)时,我都可以简单地对该列值执行相同的操作(加 100)
- 我是否必须为所有行更新
sigmaID?会不会有效率? - 我想定期检查
sigmaID是否确实是sum(Credit(ID))以确保一致性,我是否做得过火了?会不会低效? - 有没有其他方法可以解决这个问题(我担心效率)?
请提供纯 SQL 查询,因为我需要将所有这些放在 UPDATE 触发器中,它将计算此评级(以及带有其他 ID 参数的其他公式的负载)。我可能可以使用脚本语言(PHP/python),但我不确定。因此是纯 SQL 请求。
【问题讨论】:
-
我的经验不允许我以权威说话,但您似乎可以通过使用标量 function 来计算总和并使用持久的 computed column 来分配结果到。
-
@andriy-m :感谢链接,计算列的东西看起来很有希望,它仅限于 MSSQL 还是我可以在 mysql/other sql 中使用它??
-
不能说该功能是否仅限于 SQL Server,但this source 透露,至少有两个特定的服务器产品,MySQL 和 PostgreSQL,没有支持计算列(或者说,它们当时不支持)。
-
@andriy-m 谢谢,我想我会重新制定我的策略或在 stackexchange 上询问数据库管理员。
标签: sql triggers insert-update calculated-columns