Mat*_*ick 7 mysql sql timestamp database-trigger mysql-error-1293
我需要跟踪一行插入数据库的时间以及上次修改的时间.
我试图创建两个单独的列,并使用CURRENT_TIMESTAMP:
create table def (
id int,
creation timestamp
default CURRENT_TIMESTAMP,
modification timestamp
on update CURRENT_TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)
但是,这产生了一个错误:
错误1293(HY000):表定义不正确; 在DEFAULT或ON UPDATE子句中只能有一个TIMESTAMP列和CURRENT_TIMESTAMP
做这个的最好方式是什么?
我在考虑存储过程,但寻找标准解决方案.我也关注访问权限 - 因为很少有程序/事情应该能够触及时间戳.
虽然我更喜欢MySQL的答案,但其他RDBMS的解决方案也很受欢迎!
是的,这是对MySQL的限制。如果要通过应用程序,则可以为created_at列添加time()调用,并让Updated_at列使用CURRENT_TIMESTAMP。
$sql = "INSERT INTO my_table SET name = 'Mike', created_at = " . time();
Run Code Online (Sandbox Code Playgroud)
我选择在created_at列上执行此操作,因为它可能不会像update_at列那样经常被触摸。
-编辑-
更好的是,使用MySQL的内置now()函数。这样,您只需要关心mysql服务器的时区,而不必关心应用程序服务器和mysql服务器的时区。
$sql = "INSERT INTO my_table SET name = 'Mike', created_at = NOW()";
Run Code Online (Sandbox Code Playgroud)