Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Xem số hàng bị ảnh hưởng bởi DELETE trong MySQL command-line với ROW_COUNT()

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ệnhROW_COUNT()
SELECT-1
INSERTSố hàng chèn thành công
UPDATESố hàng thực sự thay đổi
DELETESố hàng xóa
REPLACESố hàng thay thế
LOAD DATASố 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.