我有一个名为 customer_transactions
的表,其中包含一个名为 amount
的列,类型为 DECIMAL
(非无符号)。在 customer
表中有一个名为 account_balance
的列,它必须始终等于客户的 customer_transactions.amount
行的总和。
除了通过触发器(最好是特别命名的触发器)之外,是否有一种方法可以通过拒绝更新 amount
列的任何其他方式来强制执行此相等性?或者也许有另一种我不知道的方法来执行此操作?
最佳答案
你能管理服务器上的权限吗?我从未尝试过,但我相信在 MySQL 5.1 及更高版本中,您可以撤销应用程序数据库用户对 customer.amount
列的任何写入权限,同时保留读取该列的权限并执行表触发器。如果您用来创建触发器的用户有权修改 amount
列,那么特权较低的用户应该仍然能够使用触发器。
除非我误解了文档...这是可能的。
关于mysql - 有没有办法将列定义为 "updatable via trigger only"以强制完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571602/