Có. MySQL cho phép thực hiện câu lệnh UPDATE mà không làm thay đổi dữ liệu thực tế, bằng cách gán cột bằng chính nó (SET col = col) hoặc điều kiện WHERE không khớp.
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable(
Id int
);
Chèn dữ liệu:
mysql> insert into DemoTable values(201); mysql> insert into DemoTable values(202); mysql> insert into DemoTable values(290); mysql> insert into DemoTable values(301);
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+------+ | Id | +------+ | 201 | | 202 | | 290 | | 301 | +------+
UPDATE không thay đổi dữ liệu
mysql> update DemoTable set Id=Id where Id=290;
Kết quả thực thi:
Query OK, 0 rows affected (0.08 sec) Rows matched: 1 Changed: 0 Warnings: 0
Kiểm tra lại dữ liệu:
mysql> select * from DemoTable;
Kết quả không đổi:
+------+ | Id | +------+ | 201 | | 202 | | 290 | | 301 | +------+
Giải thích:
SET Id = Id: Gán giá trị cũ vào chính nó → không thay đổiWHERE Id=290: Chỉ tác động 1 hàngRows matched: 1: Tìm thấy 1 hàng khớp điều kiệnChanged: 0: Không hàng nào thực sự bị sửa đổi giá trị
Ứng dụng: Kích hoạt trigger ON UPDATE, cập nhật timestamp ON UPDATE CURRENT_TIMESTAMP, test hiệu suất, hoặc đơn giản là "chạm" vào hàng để refresh cache/replication mà không sửa dữ liệu.