MYSQL程序 - INSERT INTO返回值

时间:2011-12-29 17:21:18

标签: mysql stored-procedures

我的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 个答案:

答案 0 :(得分:1)

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

“ROW_COUNT():对于INSERT ... ON DUPLICATE KEY UPDATE语句,如果将行作为新行插入,则affected-rows值为1,如果更新现有行,则为2。”

答案 1 :(得分:0)

你也可以这样做 -

向表中添加新的“flag”字段,并在INSERT上设置1或在UPDATE设置2,例如

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; 

在这种情况下,信息将存储在表格中。