Mysql 限制插入/更新/删除从触发器调用(而不是从应用程序代码)

标签 mysql sql triggers innodb

我的用例是我有一个 MYSQL 表,它后面有一个更改跟踪表。两个表都是InnoDB。
我想使用触发器来强制执行两件事。

一个:在每次更新时强制复制先前的状态(更新触发器执行插入选择查询)这并不简单,我已经做到了。

两个:将对第二个表的访问权限限制为只读,而触发器仍然可以根据需要插入/更新/删除

最佳答案

对用户访问和触发器的进一步研究发现了这一点:

Mysql 5.5 reference manual: 19.6 Access Control for Stored Programs and Views

事实证明,存储的程序可以分配一个用户来运行。触发器是存储的程序。通过将插入、更新和删除限制为仅由触发器使用的特殊用户,并使用触发器(或任何存储程序)的 DEFINER 属性,我可以使我想要访问的触发器在该用户下运行。

关于Mysql 限制插入/更新/删除从触发器调用(而不是从应用程序代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22165654/

相关文章:

mysql - 每个 ID 中字段出现的百分比

sql - 根据另一列重置运行总计

javascript - 如何使用 javascript/jquery 使 <a> 标签元素触发多个功能

wpf - 如果没有发生验证错误,如何在工具提示中显示文本框的文本。否则显示验证错误

mysql - 对 MYSQL 标签表进行排序

php - 在mysql数据库中插入 "\"符号?

mysql 按名称 asc 排序 前导 'the'

SQL 连接 - 识别缺失的行

jquery - 使用 jquery/javascript 以编程方式触发 .change 事件?

php - SQL AVG 函数不考虑空单元格