我可以通过查询将值传递给 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? 触发器是高度特定于供应商的 - 所以请添加一个标签来指定您使用的是mysqlpostgresqlsql-serveroracle 还是db2 - 或者完全是别的东西。 道歉,可能应该说我使用的是mysql 【参考方案1】:

在主表中添加用户列将是最佳实践,我们可以轻松地在触发器中使用它来在历史表中插入/删除/更新。

【讨论】:

我不知道我是否想这样做?因为用户列通常与存储在该特定表中的数据无关?

以上是关于我可以通过查询将值传递给 SQL 触发器吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 查询将值传递给具有空间/地理数据类型的存储过程

将值列表从 Python 传递到 SQL 查询的 IN 子句

如何将值传递给 Gitlab CI 作业

将值传递给派生表

通过引用将值类型变量传递给静态方法线程安全吗?

将值传递给 Worklight SQL 适配器中的 IN 运算符