我的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
的返回值,但无法找到语法或任何解决方案。
答案 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;
在这种情况下,信息将存储在表格中。