【发布时间】:2017-09-03 12:37:00
【问题描述】:
我正在使用 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);
}
插入工作正常,但控制台日志 [未定义] ....
这是表格的ddl
设置 ANSI_NULLS 为 ON
去
设置 QUOTED_IDENTIFIER ON
去
创建表 [dbo].[功能](
[id] nvarchar NOT NULL 约束 [DF_Feature_id] DEFAULT (CONVERT(nvarchar,newid(),(0))),
[createdAt] datetimeoffset NOT NULL 约束 [DF_Feature_createdAt] DEFAULT (CONVERT(datetimeoffset,sysutcdatetime(),(0))),
[updatedAt] datetimeoffset NULL,
[版本] [时间戳] NOT NULL,
[已删除] [位] NULL DEFAULT ((0)),
[标题] nvarchar NULL,
[文本] nvarchar NULL,
[period_from] datetimeoffset NULL,
[period_to] datetimeoffset NULL,
[优先级] [浮点数] NULL,
主键非集群
(
[id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
)
去
【问题讨论】:
-
对于单例插入,您可以在同一批次中的
INSERT语句之后添加SELECT SCOPE_IDENTITY()。或者,指定一个OUTPUT子句(OUTPUT inserted.ID)),它也可以处理多行插入。见docs.microsoft.com/en-us/sql/t-sql/queries/… -
@DanGuzman 感谢您的回复。我试过了,但没有用 .request.query('insert -----;SELECT SCOPE_IDENTITY()),function(err,data)。但是数据未定义。
-
@YoshihideNishimoto 为所涉及的表发布 ddl - 至少是作为主键一部分的列。大概你的表有一个标识列 - 你有不同类型的合成键吗?
-
@SMor 感谢您的回复。我发布了 ddl。
标签: sql-server node.js azure express azure-sql-database