Sau khi thực hiện DELETE (hoặc INSERT/UPDATE), hàm ROW_COUNT() trả về số hàng bị ảnh hưởng bởi câu lệnh vừa thực thi.
Cú pháp
DELETE ...; SELECT ROW_COUNT();
Ví dụ minh họa
Tạo bảng khách hàng:
mysql> CREATE TABLE rowAfftectedByDeleteDemo (
-> CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CustomerName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.86 sec)
Chèn 8 khách hàng:
mysql> INSERT INTO rowAfftectedByDeleteDemo(CustomerName) VALUES
-> ('John'), ('Carol'), ('Bob'), ('Sam'), ('David'), ('Maxwell'), ('Ramit'), ('James');
Xem dữ liệu:
mysql> SELECT * FROM rowAfftectedByDeleteDemo;
+------------+--------------+ | CustomerId | CustomerName | +------------+--------------+ | 1 | John | | 2 | Carol | | 3 | Bob | | 4 | Sam | | 5 | David | | 6 | Maxwell | | 7 | Ramit | | 8 | James | +------------+--------------+
Kiểm tra ROW_COUNT() trước khi DELETE (mặc định -1 cho SELECT):
mysql> SELECT ROW_COUNT();
+-------------+ | ROW_COUNT() | +-------------+ | -1 | +-------------+
Xóa 4 hàng (Id 3,4,5,6):
mysql> DELETE FROM rowAfftectedByDeleteDemo
-> WHERE CustomerId IN (3,4,5,6);
Query OK, 4 rows affected (0.13 sec)
Kiểm tra ROW_COUNT() sau DELETE:
mysql> SELECT ROW_COUNT();
+-------------+ | ROW_COUNT() | +-------------+ | 4 | +-------------+
Giá trị ROW_COUNT() theo loại câu lệnh
| Loại câu lệnh | ROW_COUNT() |
|---|---|
| SELECT | -1 |
| INSERT | Số hàng chèn thành công |
| UPDATE | Số hàng thực sự thay đổi |
| DELETE | Số hàng xóa |
| REPLACE | Số hàng thay thế |
| LOAD DATA | Số hàng nạp |
Trong Stored Procedure/Application
DELETE FROM orders WHERE status = 'cancelled'; SELECT ROW_COUNT() INTO @deleted_count; -- Dùng @deleted_count cho log, điều kiện tiếp theo, v.v.
Lưu ý: ROW_COUNT() chỉ phản ánh câu lệnh ngay trước đó. Chạy SELECT khác sẽ reset về -1.