Database 将当前用户带到数据库层

Database 将当前用户带到数据库层,database,logging,Database,Logging,我使用MySQL和Tomcat构建了一个经典的三层web应用程序 我想在creator_id列中保存所有表的每个数据库记录的creator id,或者只是将其记录在某个地方。 当前用户存储在http会话对象中。 修改所有查询并传递创建者id参数不可接受 我可以使用触发器、alter table命令等解决问题吗。? 最好的方法是什么 注:黑客是可以接受和欢迎的。数据库不可能知道哪个站点用户正在发送查询,它只知道哪个数据库用户。如果它是一个web应用程序,那么无论谁登录该网站,它可能始终是同一个数据

我使用MySQL和Tomcat构建了一个经典的三层web应用程序

我想在creator_id列中保存所有表的每个数据库记录的creator id,或者只是将其记录在某个地方。 当前用户存储在http会话对象中。 修改所有查询并传递创建者id参数不可接受

我可以使用触发器、alter table命令等解决问题吗。? 最好的方法是什么


注:黑客是可以接受和欢迎的。

数据库不可能知道哪个站点用户正在发送查询,它只知道哪个数据库用户。如果它是一个web应用程序,那么无论谁登录该网站,它可能始终是同一个数据库用户


简单的回答是不,您必须使用“不可接受”选项,除非您希望为每个站点用户创建一个数据库用户,并让站点使用这些用户而不是一个“共享”用户打开数据库连接。但是这可能会导致更多的问题,而不是解决问题。

根据您在问题中所说的,您的逻辑应用程序用户ID与您的数据库连接ID不同。如果是这样,数据库怎么可能知道您的逻辑应用程序用户ID是什么?除非你把它传进来,否则它就无法知道谁在做什么。您说修改所有查询以传递此信息是不可接受的。但是,您只需要修改要记录此“创建者id”值的保存。您还需要修改这些表。希望您有一个包含所有这些用户的表,并且您可以FK到该表的新列。

我正在考虑为所有打开的会话使用单独的db user和db连接,但我使用的框架不支持该功能。还有别的办法吗?黑客是可以接受和欢迎的。