我的存儲過程中有以下查詢行。這個存儲過程的目的是,如果網站鏈接已經在表中,它將更新現有的鏈接。如果不是,它將記錄爲另一個表的值中的新行。如果存在,更新表,否則在表中插入新行
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