2016-08-06 80 views
1

我有一個包含此表的數據庫: Table更新數據庫的表

該表由3列: -id:標識表 -address的每一行:把所有的地址 -default:布爾列中1定義由用戶使用

在上面使用的默認地址的圖像的默認地址是address1

我想添加第四個地址並將第四個地址設置爲默認地址。所以我寫了下面幾行:

-UPDATE address SET default=false 
-INSERT INTO addresses SET address = `address4`, default=true 

我想知道那是什麼,有什麼辦法到2線相結合,以提高性能? 或使用2行是好的?

在此先感謝您提供的幫助

+1

兩行是好的。更新修改和現有記錄。插入創建一個新的。不同的東西。 – Kosch

回答

3

您不能將它們組合成單個語句。但是,您可以將它們合併爲單個交易,以便它們同時生效。

你可以用start transaction來做到這一點,這是here

另外,我建議你反向操作:

INSERT INTO addresses 
    SET address = $address4, 
     default = false; 

UPDATE address 
    SET default = (case when address = $address4" then true else false end); 

這看起來更加複雜。但是,如果您不使用事務,則確保始終爲查詢表的其他進程設置默認地址(假設存儲引擎具有某些ACID功能)。

+0

感謝您提供幫助 – Prince