【问题标题】:How can I get the GUID value of a new row after inserting it? [duplicate]插入后如何获取新行的 GUID 值? [复制]
【发布时间】:2013-05-15 07:18:32
【问题描述】:

我正在尝试在 Sqlserver 中获取新插入记录的 ID。我检查了Scope_Identity(),但据说这会返回自动增量列的值。我用于 Id 的列是 Guid。我想要插入后的这个 Guid 列值。这应该如何实现?或者我必须编写一个自定义繁琐的函数来获取新插入记录的 Id。

【问题讨论】:

标签: c# asp.net sql sql-server


【解决方案1】:

您可以尝试使用OUTPUT,它会是这样的:

INSERT INTO ExampleTable (<Column1>, <Column2>, <Column3>) 
OUTPUT INSERTED.ID
VALUES (<Value1>, <Value2>, <Value3>)

另外,this question 有更多关于不同类型身份选择的信息,您应该查看一下。

编辑

您可以将其用作常规标量:

var command = new SqlCommand("...");
Guid id = (Guid) command.ExecuteScalar();

【讨论】:

  • 你将如何读取 C# 中 OUTPUT INSERTED.ID 返回的这个值?
  • @Paul 您可以像使用标量一样使用它(它返回单个值)。检查我的编辑。
  • 啊,谢谢。我不知道ExecuteScalar 可以返回除int 以外的任何内容。所以你说你可以做类似Guid id = (Guid) command.ExecuteScalar();的事情,因为问题是专门询问如何返回guid
  • @Paul 是的,ExecuteScalar 只是返回结果集中第一行的第一列,即 - 单个值,它可以是任何值。也感谢您的关注,我已经更新了答案。
  • 如果我们想获取所有插入的行的GUID列表(即如果我们插入多行?),我们可以使用command.ExecuteReader()吗?(ExecuteScalar vs ExecuteReader
猜你喜欢
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多