MySQL - '更新了'用于修改行的用户自动更新的列?

时间:2017-01-11 10:35:30

标签: mysql database

这是我的餐桌。

+-------------------+--------------+------+-----+---------+----------------+
| Field             | Type         | Null | Key | Default | Extra          |
+-------------------+--------------+------+-----+---------+----------------+
| ID                | int(11)      | NO   | PRI | NULL    | auto_increment |
| Postcode          | varchar(255) | YES  |     | NULL    |                |
| Town              | varchar(255) | YES  |     | NULL    |                |
| Region            | varchar(255) | YES  |     | NULL    |                |
| Company Name      | varchar(255) | YES  |     | NULL    |                |
| Fee               | double       | YES  |     | NULL    |                |
| Company Benefits  | varchar(255) | YES  |     | NULL    |                |
| Date Updated      | date         | YES  |     | NULL    |                |
| Website           | mediumtext   | YES  |     | NULL    |                |
| Updated By        | varchar(255) | YES  |     | NULL    |                |
| Notes             | varchar(255) | YES  |     | NULL    |                |
| LNG               | varchar(255) | YES  |     | NULL    |                |
| LAT               | varchar(255) | YES  |     | NULL    |                |
+-------------------+--------------+------+-----+---------+----------------+

你可以看到我们有一个"更新了"列。

如何使用,以便当用户更新行时,"更新者"列会自动更新(或插入,如果它是“他们正在添加的新行”)与当前登录的用户名?

非常感谢

3 个答案:

答案 0 :(得分:0)

您必须明确确定这一点,每当发生UPDATE时,您需要更新该列,并在下面说明。确保它的最佳方法是,只要从当前登录用户原则或声明中发生UPDATE记录,就会将应用程序逻辑填入列中

update tbl1
set ...,
 Updated By = <logged in user name>
where Id = <some val>

答案 1 :(得分:0)

您可以在Update或Insert语句中使用USER()或CURRENT_USER()来实现所需的效果。
从我的角度来看 - 唯一安全的方法是创建存储过程,为所需的表提供插入或更新 实际上,这里讨论了这个问题:
mysql Set default value of a column as the current logged in user

答案 2 :(得分:0)

这样的事情!

CREATE TRIGGER `updater`.`tableName_BEFORE_INSERT` BEFORE INSERT ON `tableName`
 FOR EACH ROW
 BEGIN
     Set New.Updated_By = current_user();
END