【问题标题】:sql same column value for all rows and update it frequentlysql所有行的相同列值并经常更新它
【发布时间】: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


【解决方案1】:

很遗憾,我的英语很差。

正如我所意识到的,您希望获得有关您的列值的所有信息,过去和现在?

你想记录它吗?如果是这样,您可以制作日志表并通过触发器在其中记录您想要的所有内容。

最好的问候,

番茄酱

【讨论】:

  • 不,我想添加 Credit 列的所有值,并在每次任何行的 Credit 值发生变化时更新此值。
  • 好的,你可以这样做:“代码”在 [yourtable] 上更新 [yourcollumn] 后为每一行创建或替换触发器 [yourtrigger] 开始更新 [yourtable] 设置 [yourcollumn] = [ yourvalue] where [yourcollumn] = [whatyouwant];结束 [你的触发器];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多