การใช้ UPDATE ที่ไม่เปลี่ยนแปลงค่า (Id = Id)
ใน MySQL เราสามารถรันคำสั่ง UPDATE ที่ตั้งค่าคอลัมน์เท่ากับตัวมันเอง (เช่น SET Id = Id) ซึ่งจะไม่ทำให้ข้อมูลเปลี่ยนแปลง แต่ยังคงเป็นคำสั่ง UPDATE ที่ถูกต้องและรันสำเร็จ
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (Id INT);
Query OK, 0 rows affected (1.02 sec)
mysql> INSERT INTO DemoTable VALUES(201);
mysql> INSERT INTO DemoTable VALUES(202);
mysql> INSERT INTO DemoTable VALUES(290);
mysql> INSERT INTO DemoTable VALUES(301);
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------+
| Id |
+------+
| 201 |
| 202 |
| 290 |
| 301 |
+------+
4 rows in set (0.00 sec)
คำสั่ง UPDATE ที่ไม่เปลี่ยนค่า
mysql> UPDATE DemoTable SET Id = Id WHERE Id = 290;
Query OK, 0 rows affected (0.08 sec)
Rows matched: 1 Changed: 0 Warnings: 0
ตรวจสอบข้อมูลอีกครั้ง
mysql> SELECT * FROM DemoTable;
ผลลัพธ์ (เหมือนเดิม):
+------+
| Id |
+------+
| 201 |
| 202 |
| 290 |
| 301 |
+------+
4 rows in set (0.00 sec)
คำอธิบาย
SET Id = Id: กำหนดค่าใหม่เท่ากับค่าเดิม → ไม่มีการเปลี่ยนแปลงWHERE Id = 290: จำกัดขอบเขตเฉพาะแถวที่ Id=290- MySQL รายงาน
Rows matched: 1 Changed: 0แสดงว่าพบแถว 1 แถว แต่ไม่มีการเปลี่ยนแปลงข้อมูล - กรณีใช้งาน: ทริกเกอร์ Trigger ที่ต้องการให้ทำงานเมื่อมี UPDATE แม้ค่าจะไม่เปลี่ยน, หรือการทดสอบ