取得Oracle當(dāng)前會(huì)話的ID(Session ID)有3種方法:
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了渝水免費(fèi)建站歡迎大家使用!
1. 下面這個(gè)應(yīng)當(dāng)是大家常用的.
SQL SELECT SID FROM V$MYSTAT WHERE ROWNUM =1;
SID
----------
140
2. 下面一個(gè)更簡(jiǎn)單, 但只能在Oracle 10g及以上版本中使用.
SQL SELECT USERENV('SID') FROM DUAL;
USERENV('SID')
--------------
140
3. 下面這個(gè)方法我有時(shí)也用, 因?yàn)椴幌胗米钌厦娴腟QL去寫一個(gè)子查詢, 發(fā)現(xiàn)在Oracle 9i上很正常, 但在Oracle 10g上常常返回兩行, 因此不能再使用它了.
SQL SELECT SID FROM V$SESSION WHERE AUDSID=USERENV('SESSIONID');
SID
----------
140
142
一、主鍵id自增
oracle 中不能設(shè)置自動(dòng)增加,這個(gè)和其他數(shù)據(jù)庫不一樣,但是有 序列,這個(gè)是Oracle自己特有的東西,
1、首先創(chuàng)建序列:create sequence seq;
語法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加幾
[START WITH n] --序列從幾開始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --小值、大值限制
比CREATE SEQUENCE seq start with 1 increment by 1; --建立了額從1開始每次加1序列
訪問序列時(shí)用 序列名稱.nextval語法
這就創(chuàng)建好了,然后 seq.nextval 就會(huì)返回一個(gè)值,不會(huì)重復(fù)的值,
insert into tablename values(seq.nextval,'test');
insert into tablename values(seq.nextval,'test');
insert into tablename values(seq.nextval,'test');
這樣前3個(gè)id 分別是 1,2,3
oracle 在sql中怎么獲取id
1、對(duì)于提交(最后一次操作commit了)的話可以查詢那個(gè)提交段
SELECT 列名1,列名2……
FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where
VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;
查出來的第一條就是最后改變的數(shù)據(jù)
2、如果表里面有序列或固定的排序字段可按倒排序后取第一條
where rownum2 order by 排序字段 desc
3、還有另外一種辦法就是利用ORACLE偽列rowid
select * from tbl t1 where t1.rowid=(select max(rowid) from tbl t2)
4、在redo log中找到對(duì)應(yīng)相關(guān)的表的插入語句,但是這樣找到的是sql語句,而不是數(shù)據(jù)。查redo log得使用log miner工具