与我的previous question类似,我再次向SO家伙寻求您的集体智慧和帮助。
在存储过程中,通过一些检查后,我需要插入新行并返回为其新创建的ID。检查是否存在行是可行的,所以这是我不确定的问题。
该表有两个重要的列:LocationID和CaseID。 CaseID是自动递增的,因此当您添加一个新的locationid时,它将自动增加。
我目前有这个:

-- previous checks for existance of CaseID

IF @CaseID IS NULL
BEGIN
    INSERT INTO
        Cases(LocationID)
    VALUES
        (@LocationID)

    -- what now?
END
我当时想立即执行@CaseID = (SELECT blah)语句,但我想知道是否有更好的方法?
有没有更好的办法?你会怎么做?

最佳答案

SELECT @CaseID = SCOPE_IDENTITY()

实际上,您可以这样做(如果那是存储过程的结尾。):
SELECT SCOPE_IDENTITY()

(OUTPUT子句仅在SQL Server 2005及更高版本中可用。)

参考:SCOPE_IDENTITY

关于tsql - 返回刚添加的行的ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/829567/

10-12 15:24