oracle怎么获得id Oracle笔记

如何取得Oracle当前会话的ID

查看当前会话的session ID 有如下三种方法:

为祁连等地区用户提供了全套网页设计制作服务,及祁连网站建设行业解决方案。主营业务为成都网站设计、成都做网站、外贸网站建设、祁连网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

1. v$mystat视图

SQL select sid from v$mystat where rownum=1;

SID

----------

1152

2. 使用userenv(‘sid’) 直接获取

这种方法只能在oracle 10g以后可以使用。

SQL select userenv('sid') from dual;

USERENV('SID')

--------------

1152

3. 结合 userenv('sessionid') 与 v$session 视图

userenv('sessionid') 返回的是session audit id.其对应v$session 的audsid字段。

在session 连接到数据库的时候,会从SYS.AUDSES$序列中获取一个audid 分配给session。

SQL select sid from v$session where audsid=userenv('sessionid');

SID

----------

773

1152

--这里返回了2个值,直接查看userenv('sessionid') 值:

SQL select userenv('sessionid') from dual;

USERENV('SESSIONID')

--------------------

4294967295

对于internal用户(’/as sysoper’ 和 ‘/as sysdba’)和后台进程,其对应的AUDID 为0.

在Oracle 10g中,如果AUDID的值为0,表明是internal 用户,如果AUDID 值是4294967295,那么就表明是用SYS 用户直接连接的。

这里返回三个结果是把所有SYS 用户的session都返回了,所以这种方法有时的准确性并不高。

oracle怎么在生成id时获取id

 一、主键id自增

oracle 中不能设置自动增加,这个和其他数据库不一样,但是有 序列,这个是Oracle自己特有的东西,

1、首先创建序列: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序列

访问序列时用 序列名称.nextval语法

这就创建好了,然后 seq.nextval 就会返回一个值,不会重复的值,

insert into tablename values(seq.nextval,'test');

insert into tablename values(seq.nextval,'test');

insert into tablename values(seq.nextval,'test');

这样前3个id 分别是 1,2,3

oracle 如何获得新插入记录的id

1、对于提交(最后一次操作commit了)的话可以查询那个提交段

SELECT 列名1,列名2……

FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where

VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;

查出来的第一条就是最后改变的数据

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中找到对应相关的表的插入语句,但是这样找到的是sql语句,而不是数据。查redo log得使用log miner工具

Oracle怎么得到刚刚新插入数据库那条记录的id

如果是plsql代码块,使用returning into 结果集,获取id;

如果是单独sql语句,若id是序列可用序列名.currval获取id值,但是出现并发情况可能获取有误;若非序列,需根据业务情况编写sql获取。

以上。


当前名称:oracle怎么获得id Oracle笔记
转载来于:http://csdahua.cn/article/hhsgjd.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流