Sql server [Azure/mssql]如何获取插入查询记录集

Sql server [Azure/mssql]如何获取插入查询记录集,sql-server,node.js,azure,express,azure-sql-database,Sql Server,Node.js,Azure,Express,Azure Sql Database,我正在使用mssql。 插入记录后,我想获取数据的id。 但我不知道该怎么做。 我的代码如下。 请给我答案 var mssql = require('mssql'); mssql.connect(config.mssql, function(err) { var request = new mssql.Request(); request.query('insert -----'),function(err, data) { console.log(data); } Insert工作正

我正在使用mssql。 插入记录后,我想获取数据的id。 但我不知道该怎么做。 我的代码如下。 请给我答案

var mssql = require('mssql');
mssql.connect(config.mssql, function(err) {
var request = new mssql.Request(); 
request.query('insert -----'),function(err, data) {
   console.log(data);
}
Insert工作正常,但控制台日志[未定义]


这是表的ddl





创建表[dbo].[Feature](
[id]nvarchar非空约束[DF_Feature_id]默认值(转换(nvarchar,newid(),(0)),
[createdAt]datetimeoffset非空约束[DF_Feature_createdAt]默认值(转换(datetimeoffset,sysutcdatetime(),(0)),
[updatedAt]datetimeoffset为空,
[版本][时间戳]不为空,
[已删除][位]空默认值((0)),
[标题]nvarchar空值,
[text]nvarchar空值,
[period\u from]日期时间偏移量为空,
[period_to]datetimeoffset为空,
[priority][float]空,
主键非聚集

[id]ASC
)使用(统计\u NORECOMPUTE=OFF,忽略\u DUP\u KEY=OFF)
)


GO

使用OUTPUT子句。下面是一个语法示例

IF OBJECT_ID('RandomTest.dbo.FeatureID_Capture', 'U') IS NOT NULL
DROP TABLE dbo.FeatureID_Capture;
GO      
CREATE TABLE dbo.FeatureID_Capture (
    Id NVARCHAR(50)
    );
GO

IF OBJECT_ID('RandomTest.dbo.Feature', 'U') IS NOT NULL
DROP TABLE dbo.Feature;
GO  
CREATE TABLE dbo.Feature (  
    id NVARCHAR(40) NOT NULL
        CONSTRAINT DF_Feature_id
        DEFAULT (CONVERT(NVARCHAR(40), NEWID(), (0))),
    createdAt DATETIMEOFFSET NOT NULL
        CONSTRAINT DF_Feature_createdAt
        DEFAULT (CONVERT(DATETIMEOFFSET, SYSUTCDATETIME(), (0))),
    updatedAt DATETIMEOFFSET NULL,
    version TIMESTAMP NOT NULL,
    deleted BIT NULL
        DEFAULT ((0)),
    title NVARCHAR (10) NULL,
    text NVARCHAR (10) NULL,
    period_from DATETIMEOFFSET NULL,
    period_to DATETIMEOFFSET NULL,
    priority FLOAT NULL,
    PRIMARY KEY NONCLUSTERED (id ASC)
    WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
    );
GO 
--=======================================================

INSERT dbo.Feature (title, text) 
    OUTPUT Inserted.id INTO dbo.FeatureID_Capture(Id)
VALUES ('t 1', 'txt 1'), ('t 2', 'txt 22'), ('t 3', 'txt 333');

-------------------------------------

SELECT *FROM dbo.FeatureID_Capture fic;
输出

Id
--------------------------------------------------
4E9EB3CD-AD44-4837-9B87-BBB85308FFBF
B93983B6-C15A-4534-8AC4-EB9404964C09
FAFA678A-8416-490C-A871-3963EAB67B9F

对于单例插入,可以在同一批中的
insert
语句之后添加
selectscope\u IDENTITY()
。或者,指定一个
OUTPUT
子句(OUTPUT inserted.ID)),该子句还可以处理多行插入。请参阅@DanGuzman感谢您的响应。我尝试了,但没有成功。request.query('insert-----;SELECT SCOPE_IDENTITY()),函数(err,data)。但数据未定义。@Yoshidenishimoto发布了所涉及表的ddl-至少是主键的一部分列。您的表可能有一个标识列-您有其他类型的合成键吗?@SMor感谢您的响应。我发布了ddl。谢谢。这似乎需要标识列。但我们的表没有标识列。我不知道这是否是原因,但会发生以下错误。“OUTPUT INTO子句的目标表不能有任何启用的触发器”它没有…我更新了我的示例…我删除了标识(1,1)属性并将手动编码的ID值添加到插入中。谢谢。嗯…在我的情况下,ID是在插入时分配的…因此我无法将ID传递给查询…您使用的SQL Server版本是什么?谢谢。它工作正常。我可以获取ID!!顺便问一下,为什么我们要删除并再次创建这些表?在执行此操作之前,它不起作用。。。