我有3个表,一个已经预先填充了数据,另外两个是全新的。
我的第一张表(预先填好的表)如下所示:
commentId, commentText, user_id, moderated, isDeleted, date_created
我的第二张表格如下:
ActionID, moderated, isDeleted, reasonText, isReffered, isAllowed
我的第三个表格如下:
ID, ActionID, CommentID
我希望能做的是:
Insert into ActionTable (moderated, isDeleted)
Select moderated, isDeleted
From CommentTable
并获取原始的commentID和新创建的ActionID,以插入我的第三个表ActionCommentLink
干杯。
答案 0 :(得分:1)
我假设你在ActionID
上有自动身份?
为什么需要ActionCommentLink
?根据您描述的过程,还没有n:m关系。
如果这是一次性工作,最快的方法是暂时将commentId
列添加到ActionTable
并使用插入填充它。如果您实际上不需要ActionCommentLink
,那么您已经完成了。否则请查询ActionTable
以填充链接,然后从ActionTable
中删除commentId。
如果您需要多次执行此操作,请使用光标并使用@@Identity
函数查询上次插入的ActionID
答案 1 :(得分:0)
只需使用OUTPUT。这直接来自帮助文件:
USE AdventureWorks2008R2;
GO
DECLARE @MyTableVar table( NewScrapReasonID smallint,
Name varchar(50),
ModifiedDate datetime);
INSERT Production.ScrapReason
OUTPUT INSERTED.ScrapReasonID, INSERTED.Name, INSERTED.ModifiedDate
INTO @MyTableVar
VALUES (N'Operator error', GETDATE());
--Display the result set of the table variable.
SELECT NewScrapReasonID, Name, ModifiedDate FROM @MyTableVar;
--Display the result set of the table.
SELECT ScrapReasonID, Name, ModifiedDate
FROM Production.ScrapReason;
GO