如何向Oracle触发器发送任意参数?
目的是向触发器发送额外信息,例如来自 Web 应用程序的当前用户 ID。由于使用了连接池,并且所有连接都使用相同的用户 ID,如何传递原始 Web 用户 ID 来触发?我需要在不接触应用程序代码的情况下实现这一点。它是一个基于java的应用程序。
约翰
The purpose is to send extra information to triggers like current user id from a web application. Since a connection pool is used, and same user id is used for all connections how do I pass the original web user id to trigger? This I need to implement without touching application code. It is a java based application.
John
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 client_identifier 会话变量将应用程序用户传递给触发器。
连接到数据库后设置它,如下所示:
并在触发器内检索它:
更多信息可以在 Oracle 文档
You can use the client_identifier session variable to pass an application user to a trigger.
Set it after connecting to the database like this:
and retrieve it inside the trigger:
More info can be found in the Oracle docs
您可以使用 Oracle 上下文:
you could use Oracle Contexts:
您可以使用包来跟踪 Web 用户:
在执行任何 DML 或其他包调用之前,在网页中使用当前用户 ID 调用 web_user_pkg.set_username。
在触发器中使用 web_user_pkg.username 获取 Web 用户名。
You can use a package to keep track of the web user:
In the web page call web_user_pkg.set_username with the current user's ID before performing any DML or other package calls.
In the trigger use web_user_pkg.username to get the web user name.