我是MySQL的新手并且正在学习它。我不知道是否有办法选择更新的记录。例如,如果我有学生数据库
ID | Name | DOB | Total-Marks |
-------------------------------------
01 | ABC | 08-22-91 | 499 |
02 | DEF | 07-14-91 | 407 |
03 | GHI | 01-31-90 | 378 |
如果Total-Marks字段中发生了一些更新,我只需要选择更新的记录。任何人都可以告诉我,我该怎么办呢。 非常感谢。
答案 0 :(得分:1)
我将使用TIMESTAMP数据类型向表last_updated
添加一列。该数据类型具有特殊行为,默认情况下,它会更新到当前日期&更新行时自动计时。有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html。
所以你要添加列:
ALTER TABLE Student ADD COLUMN last_updated TIMESTAMP
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
然后,当您对该表进行INSERT / UPDATE时,只需忽略该列。即不要为列指定值,默认值将接管并提供值。
然后,您可以查询自给定日期以来更新的所有记录:
SELECT * FROM Student WHERE last_updated > '2014-11-12 5:21:00';
重新评论:
通常,您可以根据行列中的值查询行。没有"最后更新"您可以查询的元数据。如果您无法添加列,则只能根据目前的列进行查询。
在这种情况下,一种策略是查询ID列。如果您跟踪上次读取的ID的其他位置,则可以查询新行:
SELECT * FROM Student WHERE ID > $last_id_you_read
但是这只会找到 new 行,而不是自上次读取它们以来更改过的行。如果您无法更改表格或创建触发器或其他表格,则无法检测到此情况。