<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    海上月明

    editer by sun
    posts - 162, comments - 51, trackbacks - 0, articles - 8
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    From:http://www.cnblogs.com/liping13599168/archive/2011/05/24/2054908.html

     你可能在批量處理一個事務的時候,想要批量插入一系列的數據,但是這些數據當添加完一次之后,重新添加的時候,你不想要重新添加,只是想將原有的數據進行更新,例如:我想要通過Excel將一系列的圖書導入到數據庫中,而這些圖書在你下一次編輯之后,重新導入,只是對原有的數據進行修改。以上是一個業務的場景。

    在MSSQL中,你可以使用諸如:

    IF NOT EXISTS(SELECT * FROM Book WHERE ….) THEN INSERT INTO ... ELSE UPDATE SET ...

    這樣的SQL語法表示。而在SQLite中,不支持這樣的語法。

    而對應的,在Sqlite中可以使用 Replace Into 或者 Insert Or Replace Into 這樣的語法格式。

     

    現在,我使用SQLite Developer的Sqlite客戶端數據庫管理工具,來創建數據表,對應字段如下:

    image

     

    然后,標簽切換到“索引”欄:

    image

    這里我將Name(書名)和Author(作者)創建索引,并且規定為唯一索引。保存數據表。

    這樣就意味著只要Name和Author對應是相同的,Replace into 對應的就變成 Update,如果不完成相同,就對應變成 Insert 語句。

     

    于是我在“查詢數據”中,執行SQL語句:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    REPLACE INTO tbl_book
      (
        Name ,
        Author ,
        PublishDate ,
        pagecount ,
        Memo
      )
    VALUES
      (
        'WF高級程序設計' ,
        'Bruce Bukovics' ,
        date( ) ,
        454 ,
        'Test'
      ) ;

    第一次執行時,由于表中沒有數據,所以命令轉換為Insert;

    image

    當第二次執行時,由于表中已經存在相同的“Name”和“Author”的數據,于是不進行插入,而命令將轉換為Update。

    因此,當你執行以下語句時:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    REPLACE INTO tbl_book
      (
        Name ,
        Author ,
        PublishDate ,
        pagecount ,
        Memo
      )
    VALUES
      (
        'WF高級程序設計' ,
        'Bruce Bukovics' ,
        date( ) ,
        500 ,   -- 頁碼總數改變
        'Test2' -- 備注改變
      ) ;

    執行結果:

    image

    頁碼和備注都改變了,說明這里執行了Update。

     

    然后我修改Name名稱:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    REPLACE INTO tbl_book
      (
        Name ,
        Author ,
        PublishDate ,
        pagecount ,
        Memo
      )
    VALUES
      (
        'WPF揭秘' ,     -- 書名改變
        'Bruce Bukovics' ,
        date( ) ,
        500 ,   
        'Test2'
      ) ;

    執行結果:

    image

    插入了一條圖書的記錄,同樣你也可以嘗試改變Author,同樣也是插入記錄。

     

    這樣,您就可以通過在表中創建唯一索引并且利用Replace達到Insert OR Update的目的。


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久久久久免费一区二区三区 | 国产无遮挡又黄又爽免费网站| 亚洲人成77777在线播放网站| 久操免费在线观看| 亚洲成AV人片在WWW| 国产亚洲成人久久| 很黄很色很刺激的视频免费| 极品美女一级毛片免费| 日本久久久久亚洲中字幕| 国产精品视频免费一区二区三区 | 两个人看的www免费视频| 亚洲熟女精品中文字幕| 永久亚洲成a人片777777| 久久精品免费全国观看国产| 一级特黄特色的免费大片视频| 久久精品国产亚洲av麻豆色欲| 国产一区视频在线免费观看 | 免费播放一区二区三区| 亚洲av日韩综合一区久热 | 久久久久国色AV免费观看| 亚洲中文无码av永久| 亚洲情综合五月天| 四虎成人免费大片在线| 一级毛片免费毛片一级毛片免费 | 国产精品视频免费一区二区三区| 99精品视频免费在线观看| 一个人免费观看日本www视频| 国产日本亚洲一区二区三区| 亚洲国产精品成人精品无码区 | 中文字幕免费在线播放| 亚洲av无码专区青青草原| 亚洲综合激情九月婷婷| 亚洲午夜久久久影院| 免费大片黄手机在线观看| 国外成人免费高清激情视频| 24小时在线免费视频| 日本不卡免费新一区二区三区| 成年免费a级毛片| 老湿机一区午夜精品免费福利| 亚洲偷偷自拍高清| 亚洲国产精品成人精品软件|