sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Snabbaste sättet att kontrollera om data i InnoDB-tabellen har ändrats

Det enklaste sättet är att lägga till en nollbar kolumn med typen TIMESTAMP, med utlösaren:ON UPDATE CURRENT_TIMESTAMP .

Därför kommer infogningarna inte att ändras eftersom kolumnen accepterar nollvärden, och du kan bara välja nya och ändrade kolumner genom att säga:

SELECT * FROM `table` WHERE `mdate` > '2011-12-21 12:31:22'

Varje gång du uppdaterar en rad kommer denna kolumn att ändras automatiskt.

Här är lite mer information:http://dev.mysql.com /doc/refman/5.0/en/timestamp.html

För att se raderade rader skapa helt enkelt en trigger som kommer att logga varje radering till en annan tabell:

DELIMITER $$
CREATE TRIGGER MyTable_Trigger
AFTER DELETE ON MyTable
FOR EACH ROW
BEGIN
    INSERT INTO MyTable_Deleted VALUES(OLD.id, NOW());
END$$


  1. Varför kommer inte resultaten från en SQL-fråga tillbaka i den ordning jag förväntade mig?

  2. CAST(DATETIME AS DATE) över WHERE-satsen

  3. kan inte ta emot parameter från oracle-proceduren som exekveras av mybatis

  4. ignorerar mysql fulltext stoppord i frågan