如何从链接服务器视图插入多个 table?
How to insert to multiple table from a linked server view?
我是 sql 的新手,希望有人能帮我解决这个问题。
我们有一个名为 HR-Master 的本地数据库和一个名为 SPU 的链接服务器。
我们的本地数据库中有三个表,即 EMP、REMEMP 和 EMPIC 以及一个从名为 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'
我是 sql 的新手,希望有人能帮我解决这个问题。
我们有一个名为 HR-Master 的本地数据库和一个名为 SPU 的链接服务器。 我们的本地数据库中有三个表,即 EMP、REMEMP 和 EMPIC 以及一个从名为 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'