mysql - 有没有办法将列定义为 "updatable via trigger only"以强制完整性?

标签 mysql sql triggers rdbms data-integrity

我有一个名为 customer_transactions 的表,其中包含一个名为 amount 的列,类型为 DECIMAL(非无符号)。在 customer 表中有一个名为 account_balance 的列,它必须始终等于客户的 customer_transactions.amount 行的总和。

除了通过触发器(最好是特别命名的触发器)之外,是否有一种方法可以通过拒绝更新 amount 列的任何其他方式来强制执行此相等性?或者也许有另一种我不知道的方法来执行此操作?

最佳答案

你能管理服务器上的权限吗?我从未尝试过,但我相信在 MySQL 5.1 及更高版本中,您可以撤销应用程序数据库用户对 customer.amount 列的任何写入权限,同时保留读取该列的权限并执行表触发器。如果您用来创建触发器的用户有权修改 amount 列,那么特权较低的用户应该仍然能够使用触发器。

除非我误解了文档...这是可能的。

MySQL 5.1 Create Trigger documentation

关于mysql - 有没有办法将列定义为 "updatable via trigger only"以强制完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571602/

相关文章:

Mysql地理空间点数据库

sql - MySQL存储过程动态修改表名

sql - 为非主键创建外键?

Mysql触发器: check value is actually set in before insert trigger

mysql,插入时触发以限制存储的过期密码的数量

php - adduser_process.php 不向 MySQL 表中添加信息

mysql - 优化 JDBC 查询

mysql - 当我在 my.cf 中取消注释 innodb 时,它会中断

mysql从查询的2个字段的结果中得到差异

sql - 触发编译错误原因