sql 获取当前插入的主键 表主键是guid类型的
记得用int做id时使用select@@IDENTITY和selectSCOPE_IDENTI就可以...
记得用int 做id时 使用select @@IDENTITY和 select SCOPE_IDENTI就可以
展开
展开全部
如果主键是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是很有水平的!
这样就可以返回刚新插入的主键值!
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是很有水平的!
这样就可以返回刚新插入的主键值!
展开全部
@@IDENTITY只能获取表中identity类型的值,guid的好像只能写方法或者触发器自己获得了
另外guid虽可唯一标示,但是并不顺序增长,所以拿来做主键可以,但是做聚集索引就没什么意义了,最后自己再加一列identity型的唯一列来标示
另外guid虽可唯一标示,但是并不顺序增长,所以拿来做主键可以,但是做聚集索引就没什么意义了,最后自己再加一列identity型的唯一列来标示
追问
除了写方法和触发器 没别的好办法了么 ?
追答
或者你再多加一列identity,别的真没什么好办法了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@parent_id=null
set @parent_id=newID()
insert.....
select @parent_id as 'id'
set @parent_id=newID()
insert.....
select @parent_id as 'id'
追问
set @parent_id=newID()
你这不是从新生成了一次ID吗 我的意思是在我insert 之后取 insert刚刚生成的ID
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询