这是我的餐桌。
+-------------------+--------------+------+-----+---------+----------------+
| 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 | |
+-------------------+--------------+------+-----+---------+----------------+
你可以看到我们有一个"更新了"列。
如何使用,以便当用户更新行时,"更新者"列会自动更新(或插入,如果它是“他们正在添加的新行”)与当前登录的用户名?
非常感谢
答案 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