You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找最后修改employee视图的数据库用户?

获取视图最后修改用户的查询方法

不同数据库系统的元数据存储逻辑不一样,以下是主流数据库对应的解决方案:

MySQL/MariaDB

information_schema.tables和information_schema.views里都没有存储视图最后修改者的信息。如果要找创建视图的用户,可以执行:

SELECT DEFINER FROM information_schema.VIEWS 
WHERE TABLE_SCHEMA = 'db' AND TABLE_NAME = 'employee';

但这个DEFINER是视图创建时的定义者,除非修改视图时显式指定了新的DEFINER,否则不会对应最后修改的用户。要获取最后修改视图的用户,必须依赖已开启的二进制日志(binlog),解析对应时间点的日志就能找到执行修改操作的用户和语句。

PostgreSQL

PostgreSQL的系统视图information_schema.views只记录了视图的创建和最后修改时间,没有存储修改用户。要追溯这个信息,要么开启了审计日志(比如用pgAudit插件),要么通过解析WAL日志来查找对应时间点的操作记录。日常场景下,开启审计插件是更实用的方式。

SQL Server

SQL Server可以直接通过系统表关联查询到最后修改视图的用户,执行以下语句:

SELECT dp.name AS last_modified_user
FROM sys.objects o
INNER JOIN sys.database_principals dp ON o.principal_id = dp.principal_id
WHERE o.name = 'employee' 
  AND o.type = 'V' -- 标记为视图对象
  AND OBJECT_SCHEMA_NAME(o.object_id) = 'db';

也可以结合information_schema.views来查询:

SELECT dp.name AS last_modified_user
FROM information_schema.views v
JOIN sys.objects o ON v.table_name = o.name AND v.table_schema = SCHEMA_NAME(o.schema_id)
JOIN sys.database_principals dp ON o.principal_id = dp.principal_id
WHERE v.table_schema = 'db' AND v.table_name = 'employee';

注意事项

如果你的数据库没有开启审计、二进制日志(MySQL)或WAL日志解析(PostgreSQL),可能无法获取到最后修改视图的用户——因为很多数据库默认不会在元数据中存储这个信息,只保留创建者和修改时间。

内容的提问来源于stack exchange,提问作者Keyle T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:05:33