Di MariaDB, ROW_COUNT()
adalah fungsi bawaan yang mengembalikan jumlah baris yang diperbarui, disisipkan, atau dihapus oleh pernyataan sebelumnya.
Nilai yang dikembalikan oleh ROW_COUNT()
sama dengan jumlah baris yang mysql
tampilan klien dan nilai dari mysql_affected_rows()
Fungsi C API.
Sintaks
Sintaksnya seperti ini:
ROW_COUNT()
Tidak ada argumen yang diperlukan, atau diterima.
Contoh
Pernyataan DDL
Untuk pernyataan DDL (termasuk TRUNCATE
) dan untuk pernyataan lain yang tidak mengembalikan kumpulan hasil apa pun (seperti USE
, DO
, SIGNAL
atau DEALLOCATE PREPARE
), ROW_COUNT()
fungsi mengembalikan 0
.
Mari kita buat tabel:
CREATE OR REPLACE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
Hasil:
Query OK, 0 rows affected (0.046 sec)
Dan jalankan ROW_COUNT()
:
SELECT ROW_COUNT();
Hasil:
+-------------+ | ROW_COUNT() | +-------------+ | 0 | +-------------+
Seperti yang diharapkan, 0
dikembalikan, karena nol baris terpengaruh.
Pernyataan DML
Untuk pernyataan DML selain SELECT
dan untuk ALTER TABLE
, ROW_COUNT()
fungsi mengembalikan jumlah baris yang terpengaruh.
Berikut adalah beberapa contohnya.
Sisipkan Data
Sekarang mari kita masukkan beberapa baris:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Hasil:
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)
Setiap pernyataan mengakibatkan satu baris terpengaruh.
Dan mari kita jalankan ROW_COUNT()
lagi:
SELECT ROW_COUNT();
Hasil:
+-------------+ | ROW_COUNT() | +-------------+ | 1 | +-------------+
Ini mengembalikan 1
karena itulah berapa banyak baris yang terpengaruh dalam pernyataan terakhir. Meskipun kami memengaruhi tiga baris, dibutuhkan tiga pernyataan untuk melakukannya (setiap pernyataan hanya memasukkan satu baris, dan ROW_COUNT()
hanya melaporkan pada pernyataan terakhir).
Perbarui Data
Sekarang mari kita perbarui data di ketiga baris:
UPDATE guest
SET guest_name = 'Homer';
Hasil:
Query OK, 2 rows affected (0.008 sec) Rows matched: 3 Changed: 2 Warnings: 0
mariadb
saya klien memberi tahu saya bahwa meskipun tiga baris cocok dengan kriteria, hanya dua baris yang diubah. Ini karena baris pertama sudah berisi Homer
, yang juga kami coba perbarui.
Mari kita lihat apa ROW_COUNT()
kembali:
SELECT ROW_COUNT();
Hasil:
+-------------+ | ROW_COUNT() | +-------------+ | 2 | +-------------+
Seperti yang diharapkan, ia mengembalikan 2
, karena itulah berapa banyak baris yang benar-benar diperbarui.
Pernyataan Kumpulan Hasil
Untuk pernyataan yang mengembalikan kumpulan hasil (seperti SELECT
, SHOW
, DESC
atau HELP
), ROW_COUNT()
fungsi mengembalikan -1
, bahkan ketika kumpulan hasil kosong. Hal ini juga berlaku untuk pernyataan administratif, seperti OPTIMIZE
.
Contoh:
SELECT * FROM guest;
Hasil:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Homer | | 3 | Homer | +----------+------------+ 3 rows in set (0.000 sec)
Sekarang panggil ROW_COUNT()
lagi:
SELECT ROW_COUNT();
Hasil:
+-------------+ | ROW_COUNT() | +-------------+ | -1 | +-------------+
Kunci &Pemicu Asing
Perhatikan bahwa ROW_COUNT()
tidak memperhitungkan baris akun yang tidak langsung dihapus/diperbarui oleh pernyataan terakhir. Ini berarti bahwa baris yang dihapus oleh kunci asing atau pemicu tidak dihitung.
Informasi Lebih Lanjut
Lihat dokumentasi MariaDB untuk detail lebih lanjut dan beberapa hal lain yang harus diperhatikan saat menggunakan fungsi ini.