作者fire1017 (鸟鸣啾啾)
看板Database
标题[SQL ] Insert当下select出当笔资料
时间Sat Apr 22 19:18:35 2017
资料库名称:Oracle
资料库版本:11g
内容/问题描述:
目前遇到一个问题,我想在Insert一笔资料时,
同时select出自己的PK,好让自己能再透过程式补上BLOB资料,
(会这麽麻烦是因为我的BLOB是一张QRCode,有独特性)
但问题在我的资料PK是透过sequence产生的,
我无法预先知道下一笔PK会是长怎样(可能中间出状况就跳号),
导致我再进行select时无法用insert进的PK来作为条件,
我目前想到的作法是,在table增加一个时间栏位纪录Insert当下的时间,
再透过where最新时间的方式来取回原来那笔资料,
但想想觉得有点不够俐落,而且不确定是否掺杂其他风险在
想请问版上的高手们是否有更好的解决办法?
先谢谢各位解答!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.132.71.150
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1492859919.A.588.html
1F:→ aaa7513231: 我以前PK都是自己生一个UUID来新增,就不需要回传PK了 04/22 22:28
2F:→ iFEELing: 那你程式就自己取Sequence拿到号码再塞资料进去?? 04/23 01:37
3F:推 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
4F:→ paul0407: 之前有个类似需求我是用Select ... for update来解 06/13 18:27
5F:→ paul0407: 取得最大值+1後,就是您Insert的PK值 06/13 18:30