我正在尝试使用子查询将2条记录插入到2个表中,但它会给我一个语法错误。
第15行,第1行,第4行 关键字“INSERT”附近的语法不正确。 Msg 102,Level 15,State 1,Line 4 ')'附近的语法不正确。
我正在尝试执行的查询是
INSERT INTO [Files] ([FileTransformationId],[FileTypeEnumId])
VALUES
(
(INSERT INTO [FileTransformations] OUTPUT INSERTED.FileTransformationId DEFAULT VALUES),
2
)
这可能吗?
答案 0 :(得分:1)
您需要先将输出存储在变量中。所以,我认为你想要这样的东西:
DECLARE @variable TABLE (value INT)--change type depending on your need
INSERT INTO [FileTransformations]
OUTPUT INSERTED.FileTransformationId INTO @variable(value)
VALUES(.....)
INSERT INTO [Files] ([FileTransformationId],[FileTypeEnumId])
SELECT value, 2 FROM @variable
有关使用输出变量和How do I use an INSERT statement's OUTPUT clause to get the identity value?的更多信息,请参阅Insert into table from table variable?,然后从该表变量中插入。
另一个选项,如果你只想要最后插入的记录的id是使用scope_identity()
。所以你可以把上面的内容写成:
INSERT INTO [FileTransformations]
VALUES(.....)
INSERT INTO [Files] ([FileTransformationId],[FileTypeEnumId])
VALUES scope_identity(), 2