Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server T-SQL-打印上次插入的ID_Sql Server_Tsql - Fatal编程技术网

Sql server T-SQL-打印上次插入的ID

Sql server T-SQL-打印上次插入的ID,sql-server,tsql,Sql Server,Tsql,我需要为我们的应用程序创建一组数据。我正试图将输入的ID打印在消息面板中,但似乎没有任何效果 INSERT INTO ... DECLARE @ID INTEGER = (SELECT @@Identity); PRINT @ID; 印刷品什么也没印 如何获取id 我试过了 DECLARE @ID INTEGER = (SELECT IDENT_CURRENT('tablename')) 而且它也不起作用 编辑:我需要在消息面板中打印ID,不能打印表格 脚本: INSERT INTO E

我需要为我们的应用程序创建一组数据。我正试图将输入的ID打印在消息面板中,但似乎没有任何效果

INSERT INTO ...

DECLARE @ID INTEGER = (SELECT @@Identity);
PRINT @ID;
印刷品什么也没印

如何获取
id

我试过了

DECLARE @ID INTEGER = (SELECT IDENT_CURRENT('tablename')) 
而且它也不起作用

编辑:我需要在消息面板中打印ID,不能打印表格

脚本:

INSERT INTO Employee (Name, Email)
VALUES ('a', 'a')

DECLARE @id INTEGER = ??

试着在insert语句中使用OUTPUT子句,试试看它是否有用。这是一种更为详细的方法,但是它的作用域是适当的,如果您使用的是并行性,那么它是唯一有保证的方法

--Create table variable to hold the new IDcreated by insert statement.
DECLARE @Inserted TABLE (ID Int);

--Insert the new record.
INSERT INTO [Whatever].[Table] 
    (ID)
OUTPUT Inserted.ID INTO @Inserted 
VALUES
    (ID);

SELECT ID from @Inserted;

试着在insert语句中使用OUTPUT子句,试试看它是否有用。这是一种更为详细的方法,但是它的作用域是适当的,如果您使用的是并行性,那么它是唯一有保证的方法

--Create table variable to hold the new IDcreated by insert statement.
DECLARE @Inserted TABLE (ID Int);

--Insert the new record.
INSERT INTO [Whatever].[Table] 
    (ID)
OUTPUT Inserted.ID INTO @Inserted 
VALUES
    (ID);

SELECT ID from @Inserted;

如果表中有标识列,则应使用

DECLARE @ID INT = SCOPE_IDENTITY();
因为SCOPE_IDENTITY返回您正在运行的作用域中最后插入的标识


如果触发器中有一个insert并使用@@IDENTITY变量,则会发生冲突,并且会得到错误的标识值。

如果表中有标识列,则应使用

DECLARE @ID INT = SCOPE_IDENTITY();
因为SCOPE_IDENTITY返回您正在运行的作用域中最后插入的标识



如果触发器中有一个insert并使用@@IDENTITY变量,则会发生冲突,并且会得到错误的标识值。

可能是重复的。我检查了它,但它没有帮助我解决问题。是否确实已将记录插入表中?是,我确信它是插入的。您使用的是哪个版本的SQL Server?
Emplyee
表是否有
identity
列?可能重复我已经检查过了,但没有帮助我解决问题。是否确实已将记录插入表中?是的,我确定它已插入您使用的SQL Server的哪个版本?
employee
表是否有
identity
列?插入了什么?它是从哪里来的?你不能输出到一个标量变量,只能输出到一个表中(实际的、临时的或变量的都不重要)。好的,我很快忘记了这个规则,更新了,应该可以用了。另外,仅供参考,因为你问了,inserted和deleted是sql在DML语句中创建的特殊表,您可以使用它们保存刚刚修改的数据。你可以在事后通过这种方式访问整行数据。我得到这个。。。“输出”附近的语法不正确。这就是为什么我问你它来自哪里…插入了什么?它是从哪里来的?你不能输出到一个标量变量,只能输出到一个表中(实际的、临时的或变量的都不重要)。好的,我很快忘记了这个规则,更新了,应该可以用了。另外,仅供参考,因为你问了,inserted和deleted是sql在DML语句中创建的特殊表,您可以使用它们保存刚刚修改的数据。你可以在事后通过这种方式访问整行数据。我得到这个。。。“输出”附近的语法不正确。这就是为什么我问你它是从哪里来的…在我将变量放入IDShare create table语句和完整的insert之后,它不会打印变量。如果没有这个,很难帮助。添加了一个示例在我将变量放入IDShare create table语句和完整的insert后,它不会打印变量。没有这一点,就很难提供帮助