LOCK TABLES trans READ, customer WRITE;
SELECT SUM(value) FROM trans WHERE customer_id=some_id;
UPDATE customer SET total_value=sum_from_previous_statement WHERE customer_id=some_id;
UNLOCK TABLES;
BEGIN WORK;
SELECT SUM(value) FROM trans WHERE customer_id=some_id;
UPDATE customer SET total_value=sum_from_previous_statement WHERE customer_id=some_id;
COMMIT;
UPDATE customer SET value=value+new_value WHERE customer_id=some_id;
REPLACE 功能近似 INSERT,差異:若唯一索引衝突,舊記錄在新記錄插入前被刪除。可替代「查詢→鎖表→刪除→插入→解鎖」的複雜流程:
REPLACE INTO t1 VALUES (...);
--skip-locking(部分 OS 預設),關閉外部鎖定提升效能WHERE hash=MD5(CONCAT(col1,col2)) AND col1='const' AND col2='const'RENAME TABLE foo AS foo_old, foo_new AS foo)