2013-01-03 13 views
0

我有4列(ID,姓名,電話)
ID的表的主鍵
名字,姓氏和電話都是獨一無二的。的Oracle/PHP的:插入一行,看看它是否已經在表

現在我必須插入一行,如果已經有一個名稱爲surname-tel的行取該ID並返回它,否則正常插入。

我鑫卡特在2策略:
1)做一個選擇插入之前,如果沒有找到插入它,否則採取ID
2)嘗試插入,如果錯誤代碼1(唯一約束違反)恰巧做選擇並取號碼

哪一個更好?或者有另一種策略我可以通過PHP來做到?

回答

2

你是對的,那些是最好的選擇。就性能而言,差異很小。

如果你做的第一個,你還必須實現第二個也。因爲您的第一個SELECT請求和您的第二個INSERT聲明之間,另一個進程可能已經更改了數據庫,除非您在一個事務中執行此操作。

您可以將它變成SELECT INTO語句,以在單個查詢中插入/檢查,但是您仍然必須執行第二個SELECT以獲取該ID。

所以最後:我會去第二個選項,你插入並檢查錯誤。

相關問題