有没有办法在mysql表中添加一个标志,我可以把最后一个更新字段的时间戳记与每个记录中的字段名称?有没有办法为MySQL中的记录上的最后更新的字段创建时间戳?
回答
ALTER TABLE `YOUR_TABLE_NAME_HERE` ADD LastUpdatedColumns TEXT NULL;
ALTER TABLE `YOUR_TABLE_NAME_HERE` ADD LastUpdated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
然后做您的更新时,查询其像这样
$fieldsupdated = "field1, field2, field3";
$sql = "UPDATE `YOUR_TABLE_NAME_HERE` SET LastUpdatedColumns='$fieldsupdated';
然后,如果你想在未来的报告的最后时间/日期某列被编辑,你可以做类似
$sql = "SELECT LastUpdated FROM `YOUR_TABLE_NAME_HERE` WHERE LastUpdatedColumns LIKE '%field1%'
有一种更好的方法可以做到,而不是像我想的那样广泛,但是我不能为了我今生的头脑而想到它。
好吧,我会给它一个镜头并报告回来。谢谢。 –
您必须在我的示例中手动创建$ fieldsupdated变量,但我假设您正在进行某种形式的输入验证等,因此您可以在这些验证案例中创建该字符串 – Dave
您可以通过触发器实现您的目标。您无需照顾更新指示已更新内容的列。
见下面的例子:
drop table if exists foo;
create table foo(a int, b int, c int,
modified timestamp on update current_timestamp,
whichOne varchar(255)
);
insert into foo (a, b, c) values (1, 2, 3), (4, 5, 6);
drop trigger if exists foomod;
delimiter $$
create trigger foomod before update on foo
for each row
begin
set @cols = '';
if old.a != new.a then
set @cols = CONCAT(@cols, ', ', 'a');
elseif old.b != new.b then
set @cols = CONCAT(@cols, ', ', 'b');
elseif old.c != new.c then
set @cols = CONCAT(@cols, ', ', 'c');
end if;
set new.whichOne = @cols;
end $$
delimiter ;
select * from foo;
结果:
a b c modified whichOne
1 2 3
4 5 6
update foo set b = 10 where b = 2;
select * from foo;
结果:
a b c modified whichOne
1 10 3 2013-06-27 12:45:29Z , b
4 5 6
当然疗法e的改进空间,但你明白了,对吧?
由于他正在为这样一个基本概念奋斗触发器可能在这里超出知识水平。但我喜欢这个解决方案,所以我会为你+1 – Dave
- 1. 在MySQL 4.0中同时创建了创建时间戳记列和最后更新时间戳列
- 2. 没有时间戳记的记录
- 3. Mysql:更新最新记录的字段
- 4. 带时间戳记的最后更新记录
- 5. “替换成”只有当新记录有最新的时间戳
- 6. 试图更新记录,但更新代码只更新其中一个时间戳字段,没有别的
- 7. 有没有办法显示表格更新/创建时间?
- 8. 为每个记录记录最后一次更新的时间戳
- 9. 尽管更新记录,MySQL中的时间戳不会更新
- 10. 有没有办法更新Arraylist中的记录而不删除现有记录?
- 11. mysql表中的当前时间戳字段没有自动更新
- 12. 创建触发器以更新插入或更新记录上的时间戳?
- 13. PostgreSQL有没有办法自动设置记录更新的时间?
- 14. 有没有办法在mysql中创建DATETIME列,默认为UTC中的当前时间戳?
- 15. MySql时间戳 - 更新所有行后的不同时间
- 16. 记录更改时更新表时间戳字段
- 17. 新创建的S3目录有作为1969-12-31时间戳
- 18. 替换MySQL中的现有记录或创建没有主键或唯一字段的新记录
- 19. MySQL时间戳字段 - 创建/修改
- 20. MySQL子查询 - 获取最新的时间戳记录和提取字段
- 21. 更新时间戳字段在MySQL
- 22. 有没有办法导入不带字段的记录类型?
- 23. 有没有办法找到在特定时间更新特定字段的SQL?
- 24. MySQL的 - 更新中的所有记录,以匹配最后
- 25. 选择MySQL的记录与最新的时间戳
- 26. 有没有办法在MySQL中创建新表时自动创建触发器?
- 27. 有没有办法卸载最后的凉亭更新?
- 28. 有没有办法改变Yii2为ActiveForm中的字段创建ID的格式?
- 29. 时间戳字段输出最近24小时内的记录
- 30. 如何将时间戳值更新/插入PHP/MySQL中的时间戳字段?
你能解释一下吗? –
你不能只是添加一个名为LastUpdated的列或类似的东西,并让它为该行的所有更新设置current_timestamp? – Dave
是的,但我想知道哪些是最后一次更新的字段,而不是最后一次更新的行。 –