我的存储过程中有以下查询行。此存储过程的目的是,如果网站链接已在表中,它将更新现有链接。如果不是,它将记录为来自另一个表的新行'值。
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_diffmod_v2`(
IN para_diffmod LONGTEXT,
IN para_link LONGTEXT)
BEGIN
IF EXISTS (
SELECT website_link FROM diffmod WHERE website_link=para_link
)THEN
UPDATE diffmod
SET diffmod_content=para_diffmod
WHERE website_link= para_link;
ELSE
INSERT INTO diffmod(website_id,website_link)
SELECT id,link
FROM site_html
Where link=para_link;
UPDATE diffmod
SET diffmod_content= para_diffmod
where website_link = para_link;
END IF;
END
我们已经记录了www.google.com。当我打电话时:
CALL myDB.insert_diffmod_v2('test','www.google.com');
没有问题,它会更新现有记录。
但是当我打电话给记录中没有的链接时(让我们说雅虎)就像
CALL myDB.insert_diffmod_v2('test','www.yahoo.com');
它没有在表格中作为新记录插入。我能知道为什么吗?
答案 0 :(得分:0)
插入重复密钥更新示例
" $"是参数并使website_id,website_link为唯一
INSERT INTO diffmod SET
website_id = (SELECT id FROM site_html Where link=@para_link),
website_link= $para_link,
diffmod_content=$para_diffmod
ON DUPLICATE KEY UPDATE
diffmod_content=$para_diffmod