[SQL ] Insert當下select出當筆資料

看板Database作者 (鳥鳴啾啾)時間7年前 (2017/04/22 19:18), 7年前編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/2 (看更多)
資料庫名稱:Oracle 資料庫版本:11g 內容/問題描述: 目前遇到一個問題,我想在Insert一筆資料時, 同時select出自己的PK,好讓自己能再透過程式補上BLOB資料, (會這麼麻煩是因為我的BLOB是一張QRCode,有獨特性) 但問題在我的資料PK是透過sequence產生的, 我無法預先知道下一筆PK會是長怎樣(可能中間出狀況就跳號), 導致我再進行select時無法用insert進的PK來作為條件, 我目前想到的作法是,在table增加一個時間欄位紀錄Insert當下的時間, 再透過where最新時間的方式來取回原來那筆資料, 但想想覺得有點不夠俐落,而且不確定是否摻雜其他風險在 想請問版上的高手們是否有更好的解決辦法? 先謝謝各位解答! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.71.150 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1492859919.A.588.html

04/22 22:28, , 1F
我以前PK都是自己生一個UUID來新增,就不需要回傳PK了
04/22 22:28, 1F

04/23 01:37, , 2F
那你程式就自己取Sequence拿到號碼再塞資料進去??
04/23 01:37, 2F

04/25 17:24, , 3F
uuid只是產生一個不會重複的代碼當pk而已
04/25 17:24, 3F
樓上這個方法有點類似我另外一個嘗試的方法, 我是另外手動一個UK的代碼來當圖片的參數, 不過還是想說Oracle本身有沒有其他支援的方法~ ※ 編輯: fire1017 (220.132.71.150), 04/26/2017 22:14:25 ※ 編輯: fire1017 (220.132.71.150), 04/26/2017 22:20:49

06/13 18:27, , 4F
之前有個類似需求我是用Select ... for update來解
06/13 18:27, 4F

06/13 18:30, , 5F
取得最大值+1後,就是您Insert的PK值
06/13 18:30, 5F
文章代碼(AID): #1O-pmFM8 (Database)
文章代碼(AID): #1O-pmFM8 (Database)