选择是否使用MySQL语句更新记录

时间:2014-11-13 13:14:43

标签: mysql sql

我是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字段中发生了一些更新,我只需要选择更新的记录。任何人都可以告诉我,我该怎么办呢。 非常感谢。

1 个答案:

答案 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 行,而不是自上次读取它们以来更改过的行。如果您无法更改表格或创建触发器或其他表格,则无法检测到此情况。