如何从链接服务器视图插入多个 table?

How to insert to multiple table from a linked server view?

我是 sql 的新手,希望有人能帮我解决这个问题。

我们有一个名为 HR-Master 的本地数据库和一个名为 SPU 的链接服务器。 我们的本地数据库中有三个表,即 EMPREMEMPEMPIC 以及一个从名为 EmployeepassView

的链接服务器

电磁脉冲

ID,LASTNAME,FIRST NAME, MIDNAME,COMID,LASTCHANGED, PERMISSIONS, ALLOWEDPERMISSIONS,ASSET_GROUPID,TR_DBID,QUED,SEGMENTID -

提醒

ID ,*JOBROLE,*NATIONALITY ,*PERMITAREAS,DEPT , *ISSUEDATE,*REFID,*TEAMINCHARGE 
 *MAINROLE,*SUBROLE,*ROLENAME,*ROLEID, EXPIRYDATE

EMPPIC

EMPID,OBJECT,TYPE ,*EMP_BLOB,*LASTCHANGED,ACCEPTANCETHRESHOLD, BIO_BODYPAR -

来源

EmployeepassView

([COMID],[lastName],[Name_En],[PERTYPE],[REFID],[JobTitle],[Nationality],[PERMITAreas],[IssueDate],[ExpiryDate],[TeamInCharge],[MainRole] ,[SubRolE],[RoleName],[ROLEID],[Picture],[isDisable] ,[LastPersonPrint],[LastPrintDate],[NoOfTimesPrinted],[LastUpdated],

我想从我的视图中复制值并像这样将其放在上面的三个表中

     INSERT dbo.emp ([LASTNAME],[COMID)],[LASTCHANGED])
        INSERT dbo.rememp ([jobrole],[nationality)],[PERMITAREAS], [ISSUEDATE],[REFID],[TEAMINCHARGE], [MAINROLE],[SUBROLE],[ROLENAME],[ROLEID])
        INSERT dbo.emppic ([LASTNAME],[SSNO)],[LASTCHANGED])
    select ([LASTNAME],[COMID)],[LASTCHANGED],[jobrole],[nationality],[PERMITAREAS], [ISSUEDATE],[REFID],[TEAMINCHARGE], [MAINROLE],[SUBROLE],[ROLENAME],[ROLEID],[LASTNAME],[SSNO)],[LASTCHANGED])
from EmployeepassView as ET
where ET.COMID='1234'

使用上述查询。我如何在单个查询中执行此操作?请帮忙

您必须进行三个单独的插入:

如果我理解您关于插入 ID 的评论,我将假设 EMPID 来自 dbo.emp table。所以我会做以下事情:

为存储过程编辑:

CREATE PROCEDURE InsertStuff @ID int
AS

INSERT dbo.emp ([ID],[LASTNAME],[COMID)],[LASTCHANGED])
 select @ID,[LASTNAME],[COMID)],[LASTCHANGED] from EmployeepassView as ET
 where ET.COMID='1234'

        INSERT dbo.rememp 
SELECT (@ID,[jobrole],[nationality)],[PERMITAREAS], [ISSUEDATE],[REFID],[TEAMINCHARGE], [MAINROLE],[SUBROLE],[ROLENAME],[ROLEID])
select [jobrole],[nationality],[PERMITAREAS], [ISSUEDATE],[REFID],[TEAMINCHARGE], [MAINROLE],[SUBROLE],[ROLENAME],[ROLEID],[LASTNAME],[SSNO)],[LASTCHANGED]) from EmployeepassView as ET
where ET.COMID='1234'

INSERT dbo.emppic ([EMPID],[LASTNAME],[SSNO)],[LASTCHANGED])
select @ID, [LASTNAME],[COMID)],[LASTCHANGED] from EmployeepassView as ET
where ET.COMID='1234'