2012-01-26 56 views
2

我使用PHP腳本使用ODBC更新如果ID存在,否則INSERT(ODBC)

我的工作表有一個「身份證」柱連接到Microsoft Access數據庫。如果SKU尚不存在,我想插入新記錄,否則,如果SKU存在,則只需更新該記錄。

這是什麼正確的SQL?是否有可能在一個查詢中完成?

+0

MySQL有'REPLACE INTO ...'。嘗試一下,如果它適用於MS Access。 –

+0

[Upserting in MS-access]的可能重複(http://stackoverflow.com/questions/6199417/upserting-in-ms-access) – HansUp

回答

2

我寧願在2個查詢中做。

對我來說更新或插入他們是不同的業務邏輯。爲了讓代碼清晰明瞭,最好明確定義INSERT和UPDATE的邏輯。

而在技術上我沒有看到一個乾淨方式在一個SQL語句中。每個語句都必須以「動詞」開頭,即「UPDATE」或「SELECT」或「DELETE」或其他。或者,如果你堅持這樣做,你可以嘗試刪除潛在的現有人,然後再進行「插入」,但是你可能會得到一個不一致的身份證,這也可能導致問題。

或者如果「id」是主鍵,另一個愚蠢的方法是無論如何做一個「更新」,然後做「插入」。如果沒有有效的ID,更新將失敗,插入將成功。如果有有效的ID,更新將會成功並且插入將失敗。您將在沒有使用if-else邏輯的情況下完成,但每次都會出現SQL故障,這很愚蠢和醜陋。

這幾乎是我能想到的。

0

我不會建議在一個查詢中進行。在執行查詢以添加新值之前,檢查您要添加的值是否存在。

2

個人而言,我會將其留給應用程序邏輯而不是數據庫邏輯。你可以簡單地做:

if($id) 
{ 
    $sql = 'UPDATE ... WHERE id = ?'; // assuming use of parameterized query 
} 
else 
{ 
    $sql = 'INSERT INTO ...'; 
} 
相關問題