sql 获取当前插入的主键 表主键是guid类型的

记得用int做id时使用select@@IDENTITY和selectSCOPE_IDENTI就可以... 记得用int 做id时 使用select @@IDENTITY和 select SCOPE_IDENTI就可以 展开
 我来答
chd6992413
2012-09-27 · TA获得超过160个赞
知道答主
回答量:42
采纳率:0%
帮助的人:11.1万
展开全部
如果主键是Guid,数据库给主键列以newid()的默认值,EF也会将主键值返回并更新模型的对应属性的,前提是要在EF中Mapping类中要设置
this.Property(t => t.TipID).HasDatabaseGeneratedOptio(DatabaseGeneratedOption.Identity);
此时生成的SQL语句和自增长的有所不同
exec sp_executesql N'declare @generated_keys table([TipID] uniqueidentifier)
insert [dbo].[Tips]([Description])
output inserted.[TipID] into @generated_keys
values (@0)
select t.[TipID]
from @generated_keys as g join [dbo].[Tips] as t on g.[TipID] = t.[TipID]
where @@ROWCOUNT > 0',N'@0 nvarchar(max) ',@0=N'testing'

注意:这里定义了一个表变量@generated_keys,插入的时候将id输出给@generated_keys表的字段,
这里values (@0)是针对insert [dbo].[Tips]([Description]) 而言的,先执行insert
再执行output inserted.[TipID] into @generated_keys 将插入的id输出到@generated_keys 中

EF真的是太强大了,可以模仿EF生成SQL语句,这极大地提升本人写SQL的水平,Entity Framework生成的SQL是很有水平的!
这样就可以返回刚新插入的主键值!
szm341
2012-08-07 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5179万
展开全部
@@IDENTITY只能获取表中identity类型的值,guid的好像只能写方法或者触发器自己获得了
另外guid虽可唯一标示,但是并不顺序增长,所以拿来做主键可以,但是做聚集索引就没什么意义了,最后自己再加一列identity型的唯一列来标示
追问
除了写方法和触发器 没别的好办法了么 ?
追答
或者你再多加一列identity,别的真没什么好办法了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weiboyu4
2012-08-07 · TA获得超过198个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:161万
展开全部
@parent_id=null
set @parent_id=newID()
insert.....
select @parent_id as 'id'
追问
set @parent_id=newID()

你这不是从新生成了一次ID吗 我的意思是在我insert 之后取 insert刚刚生成的ID
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式