您可以找出是否是在那裏第一次,由SELECT
ING通過url
,或可以使url
領域獨樹一幟:
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
這將從插入重複停止MySQL的行,但它會在您嘗試插入時報告錯誤。這不太好 - 雖然我們可以處理這個錯誤,但它可能會掩蓋其他人。爲了解決這個問題,我們使用ON DUPLICATE KEY UPDATE
語法:
INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
這使我們能夠提供一個重複的值的一個獨特的領域的情況下,UPDATE
聲明(這可以包括你的主鍵)。在這種情況下,我們可能想要更新modified_date
字段與當前日期。
編輯:正如~unutbu建議,如果你不想在重複改變什麼,你可以使用INSERT IGNORE
語法。這只是工作原理如下:
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
這只是簡單地將某些種類的錯誤到警告,最有用,那說明發生的錯誤會出現重複的唯一項目。如果您將關鍵字IGNORE
放入您的語句中,您將不會收到錯誤 - 查詢將被簡單地刪除。在複雜的查詢中,這可能也會隱藏其他可能有用的錯誤,所以如果你想使用它,最好是確保你的代碼是正確的。
有沒有其他方式,然後在重複更新?如檢查是否已有url = http://example.com? – 2010-04-02 01:30:32
例如query2 =「」「SELECT * FROM kompas_url WHERE url ==%s」「」 – 2010-04-02 01:34:13
還有'INSERT IGNORE',如果插入會導致唯一鍵的重複,它將簡單地忽略插入語句。 – unutbu 2010-04-02 02:02:59