看板 Database 關於我們 聯絡資訊
資料庫名稱: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
aaa7513231: 我以前PK都是自己生一個UUID來新增,就不需要回傳PK了 04/22 22:28
iFEELing: 那你程式就自己取Sequence拿到號碼再塞資料進去?? 04/23 01:37
aaa7513231: uuid只是產生一個不會重複的代碼當pk而已 04/25 17:24
樓上這個方法有點類似我另外一個嘗試的方法, 我是另外手動一個UK的代碼來當圖片的參數, 不過還是想說Oracle本身有沒有其他支援的方法~ ※ 編輯: fire1017 (220.132.71.150), 04/26/2017 22:14:25 ※ 編輯: fire1017 (220.132.71.150), 04/26/2017 22:20:49
paul0407: 之前有個類似需求我是用Select ... for update來解 06/13 18:27
paul0407: 取得最大值+1後,就是您Insert的PK值 06/13 18:30