SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.05.2008 10:10:34

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Возможно ли получить значение Rows matched

Пример

mysql> use test;
Database changed
mysql> create table tst (id int, st varchar(5));
Query OK, 0 rows affected (0.09 sec)

mysql> insert into tst values (1,'q'),(2,'w');
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from tst;
+------+------+
| id   | st   |
+------+------+
|    1 | q    |
|    2 | w    |
+------+------+
2 rows in set (0.00 sec)

mysql> update tst set st = 'w' where id = 2;
Query OK, 0 rows affected (0.02 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> update tst set st = 'w' where id = 3;
Query OK, 0 rows affected (0.02 sec)
Rows matched: 0  Changed: 0  Warnings: 0

Возможно ли получить значение Rows matched, чтобы понять, изменения не производились так как не найдено соответствие условию или потому что новое значение поля равно старому?

Неактивен

 

#2 27.05.2008 00:32:41

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: Возможно ли получить значение Rows matched

В MySQL 5.0 есть функция ROW_COUNT() - вернет количество измененных (в т.ч. добавленных или удаленных) строк:
http://dev.mysql.com/doc/refman/5.0/en/ … _row-count

Неактивен

 

#3 27.05.2008 04:29:37

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Re: Возможно ли получить значение Rows matched

LazY написал:

В MySQL 5.0 есть функция ROW_COUNT() - вернет количество измененных (в т.ч. добавленных или удаленных) строк:
http://dev.mysql.com/doc/refman/5.0/en/ … _row-count

Не сработает.
В обоих случаях вернет 0.

Неактивен

 

#4 27.05.2008 06:29:59

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: Возможно ли получить значение Rows matched

Пардон. ROW_COUNT() - это для Rows affected (т.е. количество измененных записей).
Для выяснения числа совпадений придется использовать отдельный SELECT с таким же условием.
(ну, или как извращение - триггер на UPDATE, но это далеко не всегда подойдет)

Неактивен

 

#5 27.05.2008 06:49:26

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Re: Возможно ли получить значение Rows matched

LazY написал:

Пардон. ROW_COUNT() - это для Rows affected (т.е. количество измененных записей).
Для выяснения числа совпадений придется использовать отдельный SELECT с таким же условием.
(ну, или как извращение - триггер на UPDATE, но это далеко не всегда подойдет)

SELECT не прокатит
user прав не имеет читать из этой таблицы

Про триггер это мысль.
Пороюсь. Может удастся ошибку спровоцировать.

Неактивен

 

#6 27.05.2008 06:56:52

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Re: Возможно ли получить значение Rows matched

Тема закрыта.
OLD и NEW в триггере.

Неактивен

 

#7 27.05.2008 18:24:11

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: Возможно ли получить значение Rows matched

В триггере ошибку провоцировать - это плохо... Зачем ошибку-то?

Неактивен

 

#8 28.05.2008 06:15:59

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Re: Возможно ли получить значение Rows matched

LazY написал:

В триггере ошибку провоцировать - это плохо... Зачем ошибку-то?

А что плохого.

Хандлером в ХП ее отрабатываем.
Если она вылазит не по отработчику - значит что то с секьюрити не так и нах на 404.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson