Процедуры MYSQL - INSERT INTO Возвращаемое значение - PullRequest
1 голос
/ 29 декабря 2011

У меня есть хранимая процедура MYSQL, определенная, как показано ниже:

DROP PROCEDURE IF EXISTS TEST_LOCATION;

CREATE PROCEDURE `TEST_LOCATION`()
   BEGIN
        DECLARE VCount tinyint(1) DEFAULT 1;

        INSERT INTO my_counts_model (type,code,model_code,count) 
        VALUES      ( 1,1,456,1) 
        ON DUPLICATE KEY UPDATE count = count + 1;     
 END;

Процедура обновляет счет, если type,code,model_code имеет значение в таблице, в противном случае вставляется новая запись.Я имею в виду ключ на type,code,model_code.

Я хочу узнать, будет ли это новая вставка или обновление счетчика для дальнейших операций.Я пытаюсь проверить возвращаемое значение INSERT INTO, но не смог найти синтаксис или какое-либо решение.

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_row-count

"ROW_COUNT (): Для инструкций INSERT ... ON DUPLICATE KEY UPDATE значение затрагиваемых строк равно 1, если строка вставляется как новая строка, и 2, если существующая строкаобновляется. "

0 голосов
/ 29 декабря 2011

Вы также можете сделать что-то вроде этого -

добавить новое поле 'flag' в таблицу и установить 1 на INSERT или 2 на UPDATE, например,

INSERT INTO my_counts_model (type, code, model_code, count, flag) 
VALUES ( 1, 1, 456, 1, 1) 
ON DUPLICATE KEY UPDATE count = count + 1, flag = 2; 

В этом случае информация будет храниться в таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...