MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB ROW_COUNT() erklärt

In MariaDB ROW_COUNT() ist eine integrierte Funktion, die die Anzahl der Zeilen zurückgibt, die durch die vorhergehende Anweisung aktualisiert, eingefügt oder gelöscht wurden.

Der von ROW_COUNT() zurückgegebene Wert ist die gleiche wie die Zeilenanzahl, die mysql Client zeigt und den Wert aus mysql_affected_rows() an C-API-Funktion.

Syntax

Die Syntax lautet wie folgt:

ROW_COUNT()

Es sind keine Argumente erforderlich oder akzeptiert.

Beispiele

DDL-Anweisungen

Für DDL-Anweisungen (einschließlich TRUNCATE ) und für andere Anweisungen, die keine Ergebnismenge zurückgeben (wie USE , DO , SIGNAL oder DEALLOCATE PREPARE ), die ROW_COUNT() Funktion gibt 0 zurück .

Lassen Sie uns eine Tabelle erstellen:

CREATE OR REPLACE TABLE guest (
  guest_id INT NOT NULL AUTO_INCREMENT,
  guest_name VARCHAR(255) NOT NULL,
  PRIMARY KEY (guest_id)
);

Ergebnis:

Query OK, 0 rows affected (0.046 sec)

Und führen Sie ROW_COUNT() aus :

SELECT ROW_COUNT();

Ergebnis:

+-------------+
| ROW_COUNT() |
+-------------+
|           0 |
+-------------+

Wie erwartet, 0 zurückgegeben, da null Zeilen betroffen waren.

DML-Anweisungen

Für andere DML-Anweisungen als SELECT und für ALTER TABLE , die ROW_COUNT() Funktion gibt die Anzahl der betroffenen Zeilen zurück.

Nachfolgend finden Sie einige Beispiele.

Daten einfügen

Lassen Sie uns nun einige Zeilen einfügen:

INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');

Ergebnis:

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)

Jede Anweisung führte dazu, dass eine Zeile betroffen war.

Und lassen Sie uns ROW_COUNT() ausführen nochmal:

SELECT ROW_COUNT();

Ergebnis:

+-------------+
| ROW_COUNT() |
+-------------+
|           1 |
+-------------+

Dies gibt 1 zurück denn so viele Zeilen waren in der letzten Anweisung betroffen. Obwohl wir drei Zeilen betroffen haben, waren dafür drei Anweisungen erforderlich (jede Anweisung fügte nur eine Zeile ein, und ROW_COUNT() berichtet nur über die letzte Aussage).

Daten aktualisieren

Jetzt aktualisieren wir die Daten in allen drei Zeilen:

UPDATE guest
SET guest_name = 'Homer';

Ergebnis:

Query OK, 2 rows affected (0.008 sec)
Rows matched: 3  Changed: 2  Warnings: 0

Meine mariadb Der Kunde teilt mir mit, dass, obwohl drei Zeilen den Kriterien entsprachen, nur zwei Zeilen geändert wurden. Das liegt daran, dass die erste Zeile bereits Homer enthält , auf das wir auch versuchen, es zu aktualisieren.

Mal sehen, was ROW_COUNT() ist gibt zurück:

SELECT ROW_COUNT();

Ergebnis:

+-------------+
| ROW_COUNT() |
+-------------+
|           2 |
+-------------+

Wie erwartet wird 2 zurückgegeben , denn so viele Zeilen wurden tatsächlich aktualisiert.

Ergebnissatzanweisungen

Für Anweisungen, die eine Ergebnismenge zurückgeben (wie SELECT , SHOW , DESC oder HELP ), die ROW_COUNT() Funktion gibt -1 zurück , auch wenn die Ergebnismenge leer ist. Dies gilt auch für administrative Anweisungen wie OPTIMIZE .

Beispiel:

SELECT * FROM guest;

Ergebnis:

+----------+------------+
| guest_id | guest_name |
+----------+------------+
|        1 | Homer      |
|        2 | Homer      |
|        3 | Homer      |
+----------+------------+
3 rows in set (0.000 sec)

Rufen Sie nun ROW_COUNT() auf nochmal:

SELECT ROW_COUNT();

Ergebnis:

+-------------+
| ROW_COUNT() |
+-------------+
|          -1 |
+-------------+

Fremdschlüssel &Trigger

Beachten Sie, dass ROW_COUNT() berücksichtigt keine Zeilen, die nicht direkt durch die letzte Anweisung gelöscht/aktualisiert wurden. Das bedeutet, dass durch Fremdschlüssel oder Trigger gelöschte Zeilen nicht gezählt werden.

Weitere Informationen

Weitere Informationen und einige andere Dinge, die Sie bei der Verwendung dieser Funktion beachten sollten, finden Sie in der MariaDB-Dokumentation.