sqlite - 使用触发器创建审计

时间:2013-02-07 16:04:01

标签: sqlite

我想在sqlite中为我的表创建一个小的审计机制,任何时候对表进行更改,我更新2个字段,显示谁更改了数据以及何时更改。 我们在MS SQL Server数据库中使用了类似的概念。 但我想知道如何在sqlite中实现这一点。我在表的末尾添加了2个字段,名为updatedusername,以及updateddatetime字段。 当最终用户登录我的Web应用程序并进行更改时,我可以“插入”用户凭据以及特定表的任何其他数据...... 但我想知道如何用触发器完成同样的事情。 任何人都可以对此有所了解吗? 例如,如果我要设置触发器,当插入新记录或更新现有数据时,我将如何提供登录到应用程序以进行更改的人员的用户名,而不是某些通用Web ID。被我的服务器使用....

感谢。

1 个答案:

答案 0 :(得分:1)

SQLite没有您在其他数据库中找到的用户概念,这意味着没有办法询问用户发起了什么操作。

如果客户手头有用户名,则必须确保每个INSERTUPDATE都提供了该用户名:

CREATE TABLE foo ( bar INTEGER, baz INTEGER, whodunnit TEXT );

INSERT INTO foo VALUES (1, 123, 'bob');
UPDATE foo SET baz = 1, whodunnit = 'bob' WHERE bar = 123;

时间可以由触发器自动填充,因为SQLite具有可以提供该信息的功能。