MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB ROW_COUNT () Wyjaśnione

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak UTC_DATE() działa w MariaDB

  2. Jak TO_BASE64() działa w MariaDB?

  3. MaxScale Podstawowe zarządzanie przy użyciu MaxCtrl dla klastra MariaDB — część druga

  4. MariaDB USER() Objaśnienie

  5. Zarządzanie kluczami SSL i szyfrowanie danych MySQL w transporcie