第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在MS訪問(wèn)中進(jìn)行升級(jí)

在MS訪問(wèn)中進(jìn)行升級(jí)

繁星coding 2019-07-25 10:08:31
在MS訪問(wèn)中進(jìn)行升級(jí)我需要為MS-Access 2000編寫(xiě)一個(gè)SQL查詢,以便在存在時(shí)更新一行,如果不存在則插入。(我相信這被稱為“upsert”)即如果行存在...UPDATE Table1 SET (...) WHERE Column1='SomeValue'如果它不存在......INSERT INTO Table1 VALUES (...)這可以在一個(gè)查詢中完成嗎?
查看完整描述

3 回答

?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

我通常首先運(yùn)行insert語(yǔ)句然后檢查是否發(fā)生了錯(cuò)誤3022,這表明該行已經(jīng)存在。所以像這樣:

On Error Resume Next
CurrentDb.Execute "INSERT INTO Table1 (Fields) VALUES (Data)", dbFailOnErrorIf Err.Number = 3022 Then
    Err.Clear        
    CurrentDb.Execute "UPDATE Table1 SET (Fields = Values) WHERE Column1 = 'SomeValue'", dbFailOnError
ElseIf Err.Number <> 0 Then
    'Handle the error here
    Err.ClearEnd If

編輯1:
我想提一下,我在這里發(fā)布的是一個(gè)非常常見(jiàn)的解決方案但你應(yīng)該意識(shí)到,計(jì)劃錯(cuò)誤并將它們作為程序正常流程的一部分通常被認(rèn)為是一個(gè)壞主意,特別是如果有的話其他方法可以達(dá)到相同的效果。感謝RolandTumble指出這一點(diǎn)。


查看完整回答
反對(duì) 回復(fù) 2019-07-25
?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

假設(shè)Column1上有唯一索引,您可以使用DCount表達(dá)式來(lái)確定您是否有零行或一行,其中Column1 ='SomeValue'。然后INSERTUPDATE基于該計(jì)數(shù)。

If DCount("*", "Table1", "Column1 = 'SomeValue'") = 0 Then
    Debug.Print "do INSERT"Else
    Debug.Print "do UPDATE"End If

我更喜歡這種方法,首先嘗試INSERT捕獲3022密鑰違規(guī)錯(cuò)誤,然后執(zhí)行UPDATE響應(yīng)錯(cuò)誤。但是我無(wú)法從我的方法中獲得巨大的利益。如果您的表包含自動(dòng)編號(hào)字段,則避免失敗INSERT將阻止您不必要地消耗下一個(gè)自動(dòng)編號(hào)值。我還可以避免INSERT在不需要時(shí)構(gòu)建字符串。Access Cookbook告訴我字符串連接在VBA中是一個(gè)中等昂貴的操作,所以我尋找機(jī)會(huì)避免構(gòu)建字符串,除非實(shí)際需要它們。這種方法也可以避免為不需要的人創(chuàng)建一個(gè)鎖INSERT。

但是,這些原因中沒(méi)有一個(gè)對(duì)您來(lái)說(shuō)非常有吸引力。老實(shí)說(shuō),我認(rèn)為我在這種情況下的偏好可能與我的“感覺(jué)正確”有關(guān)。我同意@ David-W-Fenton對(duì)前一個(gè)Stack Overflow問(wèn)題的評(píng)論“最好編寫(xiě)你的SQL,這樣你就不會(huì)嘗試追加已經(jīng)存在的值 - 即,防止錯(cuò)誤發(fā)生在第一個(gè)放置而不是依靠數(shù)據(jù)庫(kù)引擎來(lái)拯救你?!?/em>


查看完整回答
反對(duì) 回復(fù) 2019-07-25
  • 3 回答
  • 0 關(guān)注
  • 662 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)