mysql> CREATE TABLE linkedTable ( -> testTableId INT -> ) ENGINE = INNODB; Query OK, 0 rows affected (0.12 sec) mysql> CREATE TABLE testTable ( -> id INT, -> data CHAR(50), -> timestamp TIMESTAMP(14) -> ) ENGINE = INNODB; Query OK, 0 rows affected, 1 warning (0.11 sec) mysql> mysql> INSERT INTO linkedTable (testTableId) VALUES (1); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO testTable (id,data) VALUES (1,'original data'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM linkedTable LEFT JOIN testTable ON testTableId=id; +-------------+------+---------------+---------------------+ | testTableId | id | data | timestamp | +-------------+------+---------------+---------------------+ | 1 | 1 | original data | 2009-09-19 11:33:40 | +-------------+------+---------------+---------------------+ 1 row in set (0.00 sec) mysql> mysql> # Do an update to testTable directly which does not change anything mysql> UPDATE testTable SET data='original data' WHERE id=1; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 mysql> SELECT * FROM linkedTable LEFT JOIN testTable ON testTableId=id; +-------------+------+---------------+---------------------+ | testTableId | id | data | timestamp | +-------------+------+---------------+---------------------+ | 1 | 1 | original data | 2009-09-19 11:33:40 | +-------------+------+---------------+---------------------+ 1 row in set (0.00 sec) mysql> mysql> # Protect the update with an additional condition in the WHERE clause mysql> UPDATE linkedTable LEFT JOIN testTable ON testTableId=id SET data='original data' WHERE id=1 AND data<>'original data'; Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0 mysql> SELECT * FROM linkedTable LEFT JOIN testTable ON testTableId=id; +-------------+------+---------------+---------------------+ | testTableId | id | data | timestamp | +-------------+------+---------------+---------------------+ | 1 | 1 | original data | 2009-09-19 11:33:40 | +-------------+------+---------------+---------------------+ 1 row in set (0.00 sec) mysql> # Do an update to testTable linked to linkedTable which should not change anything mysql> UPDATE linkedTable LEFT JOIN testTable ON testTableId=id SET data='original data' WHERE id=1; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 mysql> SELECT * FROM linkedTable LEFT JOIN testTable ON testTableId=id; +-------------+------+---------------+---------------------+ | testTableId | id | data | timestamp | +-------------+------+---------------+---------------------+ | 1 | 1 | original data | 2009-09-19 11:33:40 | +-------------+------+---------------+---------------------+ 1 row in set (0.00 sec) mysql> # Do an update to testTable directly which does not change anything mysql> UPDATE testTable SET data='original data' WHERE id=1; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 mysql> SELECT * FROM linkedTable LEFT JOIN testTable ON testTableId=id; +-------------+------+---------------+---------------------+ | testTableId | id | data | timestamp | +-------------+------+---------------+---------------------+ | 1 | 1 | original data | 2009-09-19 11:33:40 | +-------------+------+---------------+---------------------+ 1 row in set (0.00 sec) mysql> mysql> # Protect the update with an additional condition in the WHERE clause mysql> UPDATE linkedTable LEFT JOIN testTable ON testTableId=id SET data='original data' WHERE id=1 AND data<>'original data'; Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0 mysql> SELECT * FROM linkedTable LEFT JOIN testTable ON testTableId=id; +-------------+------+---------------+---------------------+ | testTableId | id | data | timestamp | +-------------+------+---------------+---------------------+ | 1 | 1 | original data | 2009-09-19 11:33:40 | +-------------+------+---------------+---------------------+ 1 row in set (0.00 sec) mysql> mysql> # Do an update to testTable linked to linkedTable which should not change anything mysql> UPDATE linkedTable LEFT JOIN testTable ON testTableId=id SET data='original data' WHERE id=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM linkedTable LEFT JOIN testTable ON testTableId=id; +-------------+------+---------------+---------------------+ | testTableId | id | data | timestamp | +-------------+------+---------------+---------------------+ | 1 | 1 | original data | 2009-09-19 11:34:03 | +-------------+------+---------------+---------------------+ 1 row in set (0.00 sec)