数据库表中有一列id,它是自动增长的。当我插入一条数据以后,怎么得到这个id是多少?

时间:2023-02-06 21:44:23
数据库表中有一列id,它是自动增长的。当我插入一条数据以后,怎么得到这个id是多少?
例如表有3列:ID、NAME,AGE
其中ID自动增长。
当我插入数据(TOM,20)后,怎么获得这个ID的值?
谢谢各位!

20 个解决方案

#1


http://www.cnblogs.com/ahuo/archive/2008/01/24/1051112.html

#2


mark..

#3


select  @@IDENTITY 

#4


SQL SERVER中的三种获得自增长ID的方法
例子:
      insert into users(Code,name) values('1111','aaaa')
      select  SCOPE_IDENTITY()
      select  @@IDENTITY
      select  IDENT_CURRENT('users')


返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块――存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。


IDENT_CURRENT(表名)
返回为任何会话和任何作用域中的指定表最后生成的标识值。这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制,却会受到表的限制。

@@IDENTITY

返回最后插入的标识值。

#5


insert into table2 (org) values ('aa') select SCOPE_IDENTITY() as id

#6


引用 4 楼 the_pain 的回复:
SQL SERVER中的三种获得自增长ID的方法 
例子: 
      insert into users(Code,name) values('1111','aaaa') 
      select  SCOPE_IDENTITY() 
      select  @@IDENTITY 
      select  IDENT_CURRENT('users') 


返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块――存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同…
忘记说了。我用的是oracle9i,用序列和触发器来实现ID的自动增长的。

#7


引用 5 楼 sy_binbin 的回复:
insert into table2 (org) values ('aa') select SCOPE_IDENTITY() as id
前辈,我用的是oracle。还有就是,如果按照你这两句写,cmd执行用哪个函数?
谢谢!

#8



select  @@IDENTITY 



在sqlserver中采用

#9


select SEQ.nextval from dual

SEQ是你用的序列名。

#10


SELECT @@Identity FROM 数据库表

说明:在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。
如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。

#11


插入语句后跟一个.
SELECT IDENT_CURRENT('表名') as 'Identity'

#12


select  @@IDENTITY 
获取新添加的id

#13


oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
我用的不是sqlserver,是oracle。大家帮我看看!
谢了!

#14


            string str = "连接字符串";
            SqlConnection conn = new SqlConnection(str);
            conn.Open();
            string  cmd = "select top 1 id from 表名 order by id desc";
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(cmd,conn);
            da.Fill(ds,"表名");
            conn.Close();
            DataTable dt=ds.Tables["表名"];
            string getbusno=dt.Rows[0][0].ToString();
            

#15


           string str = "连接字符串"; 
            SqlConnection conn = new SqlConnection(str); 
            conn.Open(); 
            string  cmd = "select top 1 id from 表名 order by id desc"; 
            DataSet ds = new DataSet(); 
            OleDbDataAdapter da = new OleDbDataAdapter(cmd,conn); 
            da.Fill(ds,"表名"); 
            conn.Close(); 
            DataTable dt=ds.Tables["表名"]; 
            string getbusno=dt.Rows[0][0].ToString(); 

#16


引用 13 楼 fihuang 的回复:
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
我用的不是sqlserver,是oracle。大家帮我看看! 
谢了!



https://forum.csdn.net/BList/Oracle

#17


sql数据库中可以使用select  @@IDENTITY 

oracle数据库:插入数据后执行使用select "ID索引的名称".currval from dual 可以获得

#18


友情绑定~ 还以为是SQL呢~  
呵呵

#19


引用 13 楼 fihuang 的回复:
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
我用的不是sqlserver,是oracle。大家帮我看看! 
谢了!

oracle的9楼给出来了。

#20


用序列seq的话,插入前先通过"select seq.nextval from dual",获取要插入的id,然后把这个id和别的值一起插入到数据库。
但是现在我用了序列和触发器,所以只能先插入数据(不包括id)以后,通过“select seq.currval from dual”可以获取刚才插入的id。

#1


http://www.cnblogs.com/ahuo/archive/2008/01/24/1051112.html

#2


mark..

#3


select  @@IDENTITY 

#4


SQL SERVER中的三种获得自增长ID的方法
例子:
      insert into users(Code,name) values('1111','aaaa')
      select  SCOPE_IDENTITY()
      select  @@IDENTITY
      select  IDENT_CURRENT('users')


返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块――存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。


IDENT_CURRENT(表名)
返回为任何会话和任何作用域中的指定表最后生成的标识值。这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制,却会受到表的限制。

@@IDENTITY

返回最后插入的标识值。

#5


insert into table2 (org) values ('aa') select SCOPE_IDENTITY() as id

#6


引用 4 楼 the_pain 的回复:
SQL SERVER中的三种获得自增长ID的方法 
例子: 
      insert into users(Code,name) values('1111','aaaa') 
      select  SCOPE_IDENTITY() 
      select  @@IDENTITY 
      select  IDENT_CURRENT('users') 


返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块――存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同…
忘记说了。我用的是oracle9i,用序列和触发器来实现ID的自动增长的。

#7


引用 5 楼 sy_binbin 的回复:
insert into table2 (org) values ('aa') select SCOPE_IDENTITY() as id
前辈,我用的是oracle。还有就是,如果按照你这两句写,cmd执行用哪个函数?
谢谢!

#8



select  @@IDENTITY 



在sqlserver中采用

#9


select SEQ.nextval from dual

SEQ是你用的序列名。

#10


SELECT @@Identity FROM 数据库表

说明:在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。
如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。

#11


插入语句后跟一个.
SELECT IDENT_CURRENT('表名') as 'Identity'

#12


select  @@IDENTITY 
获取新添加的id

#13


oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
我用的不是sqlserver,是oracle。大家帮我看看!
谢了!

#14


            string str = "连接字符串";
            SqlConnection conn = new SqlConnection(str);
            conn.Open();
            string  cmd = "select top 1 id from 表名 order by id desc";
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(cmd,conn);
            da.Fill(ds,"表名");
            conn.Close();
            DataTable dt=ds.Tables["表名"];
            string getbusno=dt.Rows[0][0].ToString();
            

#15


           string str = "连接字符串"; 
            SqlConnection conn = new SqlConnection(str); 
            conn.Open(); 
            string  cmd = "select top 1 id from 表名 order by id desc"; 
            DataSet ds = new DataSet(); 
            OleDbDataAdapter da = new OleDbDataAdapter(cmd,conn); 
            da.Fill(ds,"表名"); 
            conn.Close(); 
            DataTable dt=ds.Tables["表名"]; 
            string getbusno=dt.Rows[0][0].ToString(); 

#16


引用 13 楼 fihuang 的回复:
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
我用的不是sqlserver,是oracle。大家帮我看看! 
谢了!



https://forum.csdn.net/BList/Oracle

#17


sql数据库中可以使用select  @@IDENTITY 

oracle数据库:插入数据后执行使用select "ID索引的名称".currval from dual 可以获得

#18


友情绑定~ 还以为是SQL呢~  
呵呵

#19


引用 13 楼 fihuang 的回复:
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
oracle oracle oracle oracle oracle oracle oracle oracle oracle 
我用的不是sqlserver,是oracle。大家帮我看看! 
谢了!

oracle的9楼给出来了。

#20


用序列seq的话,插入前先通过"select seq.nextval from dual",获取要插入的id,然后把这个id和别的值一起插入到数据库。
但是现在我用了序列和触发器,所以只能先插入数据(不包括id)以后,通过“select seq.currval from dual”可以获取刚才插入的id。

#21