相关疑难解决方法(0)

获取插入行的标识的最佳方法是什么?

IDENTITY插入行的最佳方法是什么?

我知道@@IDENTITYIDENT_CURRENTSCOPE_IDENTITY,但不明白连接到每个利弊.

有人可以解释一下这些差异,以及何时应该使用它们?

sql t-sql sql-server

1056
推荐指数
10
解决办法
80万
查看次数

SQL Server - INSERT后的返回值

我试图在INSERT声明后得到一个键值.示例:我有一个包含属性name和id的表.id是生成的值.

    INSERT INTO table (name) VALUES('bob');
Run Code Online (Sandbox Code Playgroud)

现在我想在同一步骤中恢复身份.这是怎么做到的?

我们正在使用Microsoft SQL Server 2008.

sql sql-server sql-server-2008

279
推荐指数
8
解决办法
48万
查看次数

使用复合主键选择刚刚插入的记录

我有一个带有复合主键的表,安排如下:

CREATE TABLE [dbo].[mytable]
(
    [some_id] [smallint] NOT NULL,
    [order_seq] [smallint] NOT NULL,
    -- etc...
)
Run Code Online (Sandbox Code Playgroud)

这两个列都是主键的一部分(它实际上是真实表上的4部分PK,但我为了示例而简化了它).没有列是身份.我正在编写一个存储过程,在下一个文件中order_seq为给定的内容插入一条新记录some_id:

CREATE PROCEDURE some_proc
(
    @some_id smallint,
    @newSeq smallint OUTPUT
)
AS
BEGIN
    insert into mytable (some_id, order_seq)
    values 
    (
         @some_id, 
         (select max(order_seq) + 1 from mytable where some_id = @some_id)
    )

    set @newSeq = /* order_seq of the newly-inserted row */
END
Run Code Online (Sandbox Code Playgroud)

我需要知道如何设置@newSeq.我想避免在插入后运行select查询,因为我不想遇到并发问题 - 我被禁止锁定表或使用事务(不要问).

据我所知,我不能使用,SCOPE_IDENTITY()因为没有列是一个标识.我怎样才能newSeq正确设置?

sql sql-server sql-server-2008 composite-primary-key

6
推荐指数
1
解决办法
2908
查看次数

插入后如何获取新行的GUID值?

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

c# sql sql-server asp.net

4
推荐指数
1
解决办法
2188
查看次数