W MariaDB, ROW_COUNT() to wbudowana funkcja, która zwraca liczbę wierszy zaktualizowanych, wstawionych lub usuniętych przez poprzednią instrukcję.
Wartość zwrócona przez ROW_COUNT() jest taka sama jak liczba wierszy, którą mysql klient wyświetla i wartość z mysql_affected_rows() Funkcja C API.
Składnia
Składnia wygląda tak:
ROW_COUNT() Żadne argumenty nie są wymagane ani akceptowane.
Przykłady
Oświadczenia DDL
Dla instrukcji DDL (w tym TRUNCATE ) oraz dla innych instrukcji, które nie zwracają żadnego zestawu wyników (takich jak USE , DO , SIGNAL lub DEALLOCATE PREPARE ), ROW_COUNT() funkcja zwraca 0 .
Stwórzmy tabelę:
CREATE OR REPLACE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
); Wynik:
Query OK, 0 rows affected (0.046 sec)
I uruchom ROW_COUNT() :
SELECT ROW_COUNT(); Wynik:
+-------------+ | ROW_COUNT() | +-------------+ | 0 | +-------------+
Zgodnie z oczekiwaniami 0 jest zwracany, ponieważ wpłynęło to na zero wierszy.
Oświadczenia DML
Dla instrukcji DML innych niż SELECT i dla ALTER TABLE , ROW_COUNT() funkcja zwraca liczbę wierszy, których dotyczy problem.
Poniżej kilka przykładów.
Wstaw dane
Teraz wstawmy kilka wierszy:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge'); Wynik:
MariaDB [Zap]> INSERT INTO guest (guest_name) VALUES ('Homer');
Query OK, 1 row affected (0.037 sec)
MariaDB [Zap]> INSERT INTO guest (guest_name) VALUES ('Bart');
Query OK, 1 row affected (0.001 sec)
MariaDB [Zap]> INSERT INTO guest (guest_name) VALUES ('Marge');
Query OK, 1 row affected (0.002 sec) Każde stwierdzenie skutkowało zmianą jednego wiersza.
I uruchommy ROW_COUNT() ponownie:
SELECT ROW_COUNT(); Wynik:
+-------------+ | ROW_COUNT() | +-------------+ | 1 | +-------------+
Zwraca 1 ponieważ na tyle wierszy wpłynęło ostatnie stwierdzenie. Mimo że wpłynęliśmy na trzy wiersze, do tego celu potrzebne były trzy instrukcje (każda instrukcja wstawiała tylko jeden wiersz i ROW_COUNT() raporty tylko z ostatniego zestawienia).
Aktualizuj dane
Teraz zaktualizujmy dane we wszystkich trzech wierszach:
UPDATE guest
SET guest_name = 'Homer'; Wynik:
Query OK, 2 rows affected (0.008 sec) Rows matched: 3 Changed: 2 Warnings: 0
Moja mariadb klient mówi mi, że chociaż trzy wiersze spełniały kryteria, tylko dwa wiersze zostały zmienione. Dzieje się tak, ponieważ pierwszy wiersz zawiera już Homer , do czego również staramy się go zaktualizować.
Zobaczmy, co ROW_COUNT() zwraca:
SELECT ROW_COUNT(); Wynik:
+-------------+ | ROW_COUNT() | +-------------+ | 2 | +-------------+
Zgodnie z oczekiwaniami, zwraca 2 , ponieważ tyle wierszy zostało faktycznie zaktualizowanych.
Oświadczenia dotyczące zestawu wyników
Dla instrukcji zwracających zestaw wyników (takich jak SELECT , SHOW , DESC lub HELP ), ROW_COUNT() funkcja zwraca -1 , nawet jeśli zestaw wyników jest pusty. Dotyczy to również instrukcji administracyjnych, takich jak OPTIMIZE .
Przykład:
SELECT * FROM guest; Wynik:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Homer | | 3 | Homer | +----------+------------+ 3 rows in set (0.000 sec)
Teraz wywołaj ROW_COUNT() ponownie:
SELECT ROW_COUNT(); Wynik:
+-------------+ | ROW_COUNT() | +-------------+ | -1 | +-------------+
Klucze obce i wyzwalacze
Pamiętaj, że ROW_COUNT() nie uwzględnia wierszy, które nie są bezpośrednio usuwane/aktualizowane przez ostatnią instrukcję. Oznacza to, że wiersze usunięte przez klucze obce lub wyzwalacze nie są liczone.
Więcej informacji
Zapoznaj się z dokumentacją MariaDB, aby uzyskać więcej szczegółów i kilka innych rzeczy, o których należy pamiętać podczas korzystania z tej funkcji.