MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB ROW_COUNT() Обяснено

В MariaDB, ROW_COUNT() е вградена функция, която връща броя на редовете, актуализирани, вмъкнати или изтрити от предходния израз.

Стойността, върната от ROW_COUNT() е същото като броя на редовете, който mysql клиентски дисплеи и стойността от mysql_affected_rows() C API функция.

Синтаксис

Синтаксисът е така:

ROW_COUNT()

Не се изискват и не се приемат аргументи.

Примери

DDL изявления

За DDL изрази (включително TRUNCATE ) и за други изрази, които не връщат никакъв набор от резултати (като USE , DO , SIGNAL или DEALLOCATE PREPARE ), ROW_COUNT() функцията връща 0 .

Нека създадем таблица:

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

Резултат:

Query OK, 0 rows affected (0.046 sec)

И стартирайте ROW_COUNT() :

SELECT ROW_COUNT();

Резултат:

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

Както се очакваше, 0 се връща, защото са засегнати нула редове.

DML изявления

За DML изрази, различни от SELECT и за ALTER TABLE , ROW_COUNT() функцията връща броя на засегнатите редове.

По-долу са дадени няколко примера.

Вмъкване на данни

Сега нека вмъкнем няколко реда:

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

Резултат:

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)

Всяко изявление доведе до засягане на един ред.

И нека изпълним ROW_COUNT() отново:

SELECT ROW_COUNT();

Резултат:

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

Това връща 1 защото това е колко реда бяха засегнати в последното изявление. Въпреки че засегнахме три реда, бяха необходими три оператора, за да направим това (всяко изявление вмъкна само един ред и ROW_COUNT() само доклади за последното изявление).

Актуализиране на данните

Сега нека актуализираме данните и в трите реда:

UPDATE guest
SET guest_name = 'Homer';

Резултат:

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

Моят mariadb клиентът ми казва, че въпреки че три реда отговарят на критериите, само два реда са променени. Това е така, защото първият ред вече съдържа Homer , което също се опитваме да го актуализираме.

Нека видим какво е ROW_COUNT() връща:

SELECT ROW_COUNT();

Резултат:

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

Както се очаква, той връща 2 , защото това е колко реда всъщност бяха актуализирани.

Изявления за набор от резултати

За изрази, които връщат набор от резултати (като SELECT , SHOW , DESC или HELP ), ROW_COUNT() функцията връща -1 , дори когато резултатният набор е празен. Това важи и за административни изрази, като OPTIMIZE .

Пример:

SELECT * FROM guest;

Резултат:

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

Сега извикайте ROW_COUNT() отново:

SELECT ROW_COUNT();

Резултат:

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

Външни ключове и тригери

Обърнете внимание, че ROW_COUNT() не взема предвид редове, които не са директно изтрити/актуализирани от последния израз. Това означава, че редовете, изтрити от външни ключове или тригери, не се отчитат.

Повече информация

Вижте документацията на MariaDB за повече подробности и няколко други неща, които трябва да имате предвид, когато използвате тази функция.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разположите Open edX MySQL база данни за висока наличност

  2. Планиране на капацитет за MySQL и MariaDB – Оразмеряване на размера на съхранение

  3. Как работи CONVERT_TZ() в MariaDB

  4. 2 начина за изтриване на дублиращи се редове в MariaDB (игнорира първичен ключ)

  5. Как да инсталирате, защитите и настроите производителността на сървъра на базата данни MariaDB