我在MSSQL数据库上运行如下的原始查询:
sequelize.query(DELETE FROM vehicle where vehicleId IN ('1', '2', '3'))
返回始终为[ [], [] ]
。这应该包含元数据和数组结果。我们还有一个具有相同表的MYSQL数据库。当在那里运行相同的查询时,结果会带有预期的元数据和结果。
根据documentation,如果我将{ type: sequelize.QueryTypes.DELETE}
作为第二个参数包含,它将只返回没有元数据的结果。相反,它返回undefined
。
我在这里缺少什么?
答案 0 :(得分:0)
因此,对于那些希望找到相同或类似问题答案的人,我通过添加OUTPUT DELETED.id, DELETED.createdOn, ... WHERE <where clause>
来完成这项工作。这也适用于插入。您只需将DELETED
替换为INSERTED
即可。有关详细信息,请参阅此documentation。
PS:在原始问题上错误地指出SELECT
而不是DELETE
。
答案 1 :(得分:0)
我通过在INSERT语句后附加SELECT语句解决了此问题。对于我的特定问题,我有以下内容:
sequelize.query('INSERT INTO Users (FirstName, LastName, Email, Pwd) VALUES (@first_name, @last_name, @email, @password)')
我将其更新为
sequelize.query('INSERT INTO Users (FirstName, LastName, Email, Pwd) VALUES (@first_name, @last_name, @email, @password) SELECT FirstName, LastName, Email, UserID FROM Users WHERE Email = @email')
为清楚起见,这是完整的SQL语句:
INSERT INTO Users (FirstName, LastName, Email, Pwd)
VALUES (@first_name, @last_name, @email, @password)
SELECT FirstName, LastName, Email, UserID
FROM Users
WHERE Email = @email
基本上是两个查询。这将返回插入的数据,而无需使用OUTPUT子句。