Mysql Trigger或者只是一个简单的Insert语句..哪一个更适合记录历史记录?

时间:2011-09-05 02:06:56

标签: mysql triggers

我的数据库中有这么多表。 例如。用户,组织等

**User**

userId,name,age,orgId,etc..

**SessionLog**
logId, userId, operations, reason

如果一个管理员进行了插入,更新,删除等更改,我将记录他所创建的SessionLog表 WHAT 中的每个操作。

所以我打算使用Trigger。但问题是我想记录 WHO 的userId。 使用Trigger WHAT即可。 但是为了记录世卫组织,我该怎么办?

1)我是否需要检索logId并需要更新WHO的行?

2)只需使用简单的INSERT语句记录所有内容?哪种方式更好?

3)有没有办法将所需参数传递给Trigger?

感谢。

1 个答案:

答案 0 :(得分:1)

<强> 1。用户

您可以使用CURRENT_USER来获取此信息。 http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user

<强> 2。插入声明与触发器

触发器将抽象远离其他人的日志记录,并且通常是隐藏的最简单的解决方案。

INSERTS / UPDATES在触发器完成之前不会返回。

因此,虽然触发具有轻量级活动的表是一个好主意,但在处理具有大量活动的表时,它将成为一个真正的障碍。

另一种选择是将其封装在数据访问层中,但如果您有一个直接访问数据的用户(包括DBA),那么我不推荐这种方法。