我需要插入訪問數據庫。但是如果列dup已經在表格中,則跳過該行。ms access access insert into no duplicates
我到目前爲止是這樣的:
<cfoutput query="hours">
<cfquery name="Employee" datasource="test">
INSERT INTO Tbl_Hours_Comments
(ID, ship_num, dup)
values(#hours.id#, #hours.ship#, #hours.dup#)
</cfquery>
</cfoutput>
如果我不作DUP主鍵。然後它將INSERT重複。如果我讓一個主鍵。然後我得到一個錯誤。
我想我需要類似MySQL的東西。在DUPLICATE KEY UPDATE上。
或者可能像在Oracle中一樣處理dup_val_on_index異常。
@Gord湯普森
我試過(不知道我這樣做是正確):
<cfoutput query="hours">
<cfquery name="Insert_Employee" datasource="trung">
INSERT Tbl_Hours_Comments (ID, ship_num, dup)
values(#hours.id#, #hours.ship#, #hours.dup#)
SELECT ? as dup
FROM(SELECT COUNT(*) as n from Tbl_Hours_Comments) as Dual
WHERE NOT EXISTS
( SELECT *
FROM Tbl_Hours_Comments
WHERE dup = ?
)
</cfquery>
</cfoutput>
,但我得到[微軟] [ODBC Microsoft Access驅動程序] COUNT字段不正確。
什麼是?在你的選擇聲明?
如果這是VBA,可以用'Set Warnings False'關閉警告,運行SQL,然後'Set Warnings True'或使用CurrentDb.Execute。回顧http://stackoverflow.com/questions/14383503/on-duplicate-key-update-same-as-insert – June7
[重複密鑰更新與插入相同]的可能重複(http://stackoverflow.com/questions/ 14383503/on-duplicate-key-update-same-as-insert) – June7
「小時」查詢中數據的來源是什麼?如果它來自同一個數據庫中的一個表,那麼跳過cfloop並使用一個'insert into/select ... from ...'語句包含一個'where not exists ...'語句會更有效率。 – Leigh