例如表有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
返回最后插入的标识值。
例子:
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
忘记说了。我用的是oracle9i,用序列和触发器来实现ID的自动增长的。
#7
前辈,我用的是oracle。还有就是,如果按照你这两句写,cmd执行用哪个函数?
谢谢!
谢谢!
#8
select @@IDENTITY
在sqlserver中采用
#9
select SEQ.nextval from dual
SEQ是你用的序列名。
SEQ是你用的序列名。
#10
SELECT @@Identity FROM 数据库表
说明:在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。
如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。
说明:在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。
如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。
#11
插入语句后跟一个.
SELECT IDENT_CURRENT('表名') as 'Identity'
SELECT IDENT_CURRENT('表名') as 'Identity'
#12
select @@IDENTITY
获取新添加的id
获取新添加的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。大家帮我看看!
谢了!
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();
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();
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();
#17
sql数据库中可以使用select @@IDENTITY
oracle数据库:插入数据后执行使用select "ID索引的名称".currval from dual 可以获得
oracle数据库:插入数据后执行使用select "ID索引的名称".currval from dual 可以获得
#18
友情绑定~ 还以为是SQL呢~
呵呵
呵呵
#19
oracle的9楼给出来了。
#20
用序列seq的话,插入前先通过"select seq.nextval from dual",获取要插入的id,然后把这个id和别的值一起插入到数据库。
但是现在我用了序列和触发器,所以只能先插入数据(不包括id)以后,通过“select seq.currval from dual”可以获取刚才插入的id。
但是现在我用了序列和触发器,所以只能先插入数据(不包括id)以后,通过“select seq.currval from dual”可以获取刚才插入的id。
#21
#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
返回最后插入的标识值。
例子:
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
忘记说了。我用的是oracle9i,用序列和触发器来实现ID的自动增长的。
#7
前辈,我用的是oracle。还有就是,如果按照你这两句写,cmd执行用哪个函数?
谢谢!
谢谢!
#8
select @@IDENTITY
在sqlserver中采用
#9
select SEQ.nextval from dual
SEQ是你用的序列名。
SEQ是你用的序列名。
#10
SELECT @@Identity FROM 数据库表
说明:在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。
如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。
说明:在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。
如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。
#11
插入语句后跟一个.
SELECT IDENT_CURRENT('表名') as 'Identity'
SELECT IDENT_CURRENT('表名') as 'Identity'
#12
select @@IDENTITY
获取新添加的id
获取新添加的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。大家帮我看看!
谢了!
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();
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();
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
#17
sql数据库中可以使用select @@IDENTITY
oracle数据库:插入数据后执行使用select "ID索引的名称".currval from dual 可以获得
oracle数据库:插入数据后执行使用select "ID索引的名称".currval from dual 可以获得
#18
友情绑定~ 还以为是SQL呢~
呵呵
呵呵
#19
oracle的9楼给出来了。
#20
用序列seq的话,插入前先通过"select seq.nextval from dual",获取要插入的id,然后把这个id和别的值一起插入到数据库。
但是现在我用了序列和触发器,所以只能先插入数据(不包括id)以后,通过“select seq.currval from dual”可以获取刚才插入的id。
但是现在我用了序列和触发器,所以只能先插入数据(不包括id)以后,通过“select seq.currval from dual”可以获取刚才插入的id。