如果存在,更新表,否则在表中插入新行
我的存储过程中有以下查询行。这个存储过程的目的是,如果网站链接已经在表中,它将更新现有的链接。如果不是,它将记录为另一个表的值中的新行。如果存在,更新表,否则在表中插入新行
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');
它没有在表中插入新记录。我能知道为什么吗?
插入到上的重复密钥更新例如
“$”的参数,使website_id,website_link独特
INSERT INTO diffmod SET
website_id = (SELECT id FROM site_html Where [email protected]_link),
website_link= $para_link,
diffmod_content=$para_diffmod
ON DUPLICATE KEY UPDATE
diffmod_content=$para_diffmod
相当陌生,请检查此并让我知道 –
它显示以下错误。 错误代码:1054.'字段列表'中的未知列'$ para_link'\t 0.000秒 – Achilles
哪个错误?你可以添加 –
请不要使用无关的标记。 MySql **不是** sql服务器。 –
你可以直接使用重复键更新语句而不是以上 –
我可以知道我该怎么办?我对MySQL – Achilles