我可以通过查询将值传递给 SQL 触发器吗?
Posted
技术标签:
【中文标题】我可以通过查询将值传递给 SQL 触发器吗?【英文标题】:Can I pass a value into a SQL trigger through a query? 【发布时间】:2018-03-09 10:28:37 【问题描述】:我想为在数据库中完成的操作创建一个历史表,我认为最简单的方法是创建一个历史表,该表通过修改每个表的触发器进行更新。
我还想包含一个 userId,这样我也可以识别谁更改了它,但是当我执行插入/删除语句等时,我还需要添加 userId(这与操作无关),以便使用我所描述的历史记录表。
那么有没有办法将 userId 放入 SQL 语句中?或者我应该在执行插入/删除语句之后将历史表作为单独的查询来执行,而不是使用触发器
提前致谢
授予
【问题讨论】:
您使用的是哪个 dbms? 触发器是高度特定于供应商的 - 所以请添加一个标签来指定您使用的是mysql
、postgresql
、sql-server
、oracle
还是db2
- 或者完全是别的东西。
道歉,可能应该说我使用的是mysql
【参考方案1】:
在主表中添加用户列将是最佳实践,我们可以轻松地在触发器中使用它来在历史表中插入/删除/更新。
【讨论】:
我不知道我是否想这样做?因为用户列通常与存储在该特定表中的数据无关?以上是关于我可以通过查询将值传递给 SQL 触发器吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SQL 查询将值传递给具有空间/地理数据类型的存储过程