我的存储过程中有以下查询行。这个存储过程的目的是,如果网站链接已经在表中,它将更新现有的链接。如果不是,它将记录为另一个表的值中的新行。如果存在,更新表,否则在表中插入新行
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');
它没有在表中插入新记录。我能知道为什么吗?
请不要使用无关的标记。 MySql **不是** sql服务器。 –
你可以直接使用重复键更新语句而不是以上 –
我可以知道我该怎么办?我对MySQL – Achilles