求一条sql语句实现插入数据并返回这条记录的id

littlelam 2006-08-31 10:35:24
表[TableA]结构:id,username,password
id为种子
用一条sql语句实现插入('小明','123456')并返回这条记录的id
注意:要用一条语句实现!!!
...全文
1227 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlelam 2006-08-31
  • 打赏
  • 举报
回复
http://www.sql-club.com/wangyong/archive/2006/04/18/507.aspx
Select @@IDENTITY,很多程序员常用的语句。

通常情况下,这样的使用没有问题。但如果被插入数据的表上有Insert触发器,而这个触发器中有正好有了Insert动作,那么Select @@IDENTITY返回的值也许就不是预期的了。有了引子,后面偷个懒,Copy from online help.

在返回插入到表的 @@IDENTITY 列的最后一个值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函数类似。

@@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。

IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回任何会话和任何作用域中为特定表生成的标识值。

作用域:一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
================
结贴
specialsoldier 2006-08-31
  • 打赏
  • 举报
回复
如果insert有返回值的话就号办了 可惜...
killxtt 2006-08-31
  • 打赏
  • 举报
回复
不清楚,mark,学习一下。
IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回任何会话和任何作用域中为特定表生成的标识值
用这个呢
xyxfly 2006-08-31
  • 打赏
  • 举报
回复
如果非要一条语句,应该只能耍无奈吧
呵呵


select @@identity 会不会不是期望的结果 我觉得应该会,@@identity: 返回目前session,所有范围(scope)中,任何表所生成的最后一个IDENTITY值

因为前面说了是当前session

MS应该会有考虑吧,高手指正 ^_^
littlelam 2006-08-31
  • 打赏
  • 举报
回复
返回这条记录的id? 必然要有一条显示ID的语句,
而Insert不可能完成返回显示ID的功能。
=================================
那就是出题目的人的问题了,先不管这个了

帮忙回答这个问题,分不够可再+

@@identity: 返回目前session,所有范围(scope)中,任何表所生成的最后一个IDENTITY值
=========================================
如果其它表也同时数据插入的话,select @@identity 会不会不是期望的结果?
WangZWang 2006-08-31
  • 打赏
  • 举报
回复
返回这条记录的id? 必然要有一条显示ID的语句,
而Insert不可能完成返回显示ID的功能。
littlelam 2006-08-31
  • 打赏
  • 举报
回复
@@identity: 返回目前session,所有范围(scope)中,任何表所生成的最后一个IDENTITY值
=========================================
如果其它表也同时数据插入的话,select @@identity 会不会错误?
littlelam 2006-08-31
  • 打赏
  • 举报
回复
这种就算一条语句那我无语.那个主考的人可以挂了
==============================================
exec('insert tablea select ''小明'',''123456''
select @@identity')
这应该算两句。。
================================
出题目的人没给出正确答案,如果没有人给出一句的等下就结贴。
九斤半 2006-08-31
  • 打赏
  • 举报
回复
呵呵,要是我也答不出来~~~
fcuandy 2006-08-31
  • 打赏
  • 举报
回复
这种就算一条语句那我无语.那个主考的人可以挂了
littlelam 2006-08-31
  • 打赏
  • 举报
回复
xyxfly(小虾米......BS问题解决不结贴)
正解
能说下这句
insert tablea select '小明','123456' select @@identity
是意思吗?
abc_sk 2006-08-31
  • 打赏
  • 举报
回复
两条语句就OK
xyxfly 2006-08-31
  • 打赏
  • 举报
回复
create table tablea
(
id int identity(1,1),
username varchar(100),
password varchar(100)
)

exec('insert tablea select ''小明'',''123456''
select @@identity')


这样算一句的话,呵呵^_^
littlelam 2006-08-31
  • 打赏
  • 举报
回复
某公司的面试题!!!
fcuandy 2006-08-31
  • 打赏
  • 举报
回复
不可能

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧