2011-02-08 98 views
0

我需要添加一行到MySQL數據庫表,但只有當行不存在時。我的數據庫服務器剛剛關閉,所以我無法測試這個,但會按預期工作嗎?檢查是否存在行,如果沒有添加它[MySQL]

INSERT INTO `blocks` (`block_file`,`settings_group`) 
VALUES ('announcements','announcement_settings') 
WHERE NOT EXISTS (SELECT `block_file`,`settings_group` 
        FROM `blocks` 
        WHERE `block_file`='announcements' AND `settings_group`='announcement_settings') 

它看起來像聲音邏輯。這是一個有效的查詢還是有更好的方法呢?

+0

在SQL Server中,這種類型的方法會給你一個競爭條件。不確定這是否也適用於MySQL。它只是這個具體的查詢還是你總是想要在這兩列上執行唯一性? – 2011-02-08 23:26:28

+1

與mysql相同 - 當您從中選擇表格時,無法修改表格 – 2011-02-08 23:34:27

回答

3

只需在(block_file,settings_group)列上創建UNIQUE索引,MySQL絕不會讓您插入會重複這些值的行。

並回答這個問題:不,它根本不起作用。

相關問題