2017-08-08 116 views
-1

我是新来的SQL,并希望任何人都可以帮助我解决这个问题。如何从链接的服务器视图插入多个表?

我们有一个名为HR-Master的本地数据库和一个名为SPU的链接服务器。 有一个在我们的本地数据库即EMPREMEMP三个表EMPIC和所谓EmployeepassView

EMP

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

REMEMP链接服务器创建一个视图

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' 

使用上述查询。我怎样才能做到这一点在单个查询请帮

+0

你不能。 SQL Server只允许你在'insert'语句中插入一个表。 –

+0

使用1查询无法插入多个表。它必须是3个单独的插入语句 –

+0

所以,我需要为每个表运行三个插入语句? – aryan

回答

0

你必须做的三个独立的刀片:

如果我了解插入的ID,我要承担EMPID您的评论来自dbo.emp表。因此,我将做到以下几点:

编辑的存储过程:

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' 
+0

所有三个表都有一个公共和本地ID列我如何在这里插入ID。 – aryan

+0

从哪里生成的ID,即它是一个标识列还是来自其他地方?它是否在所有三个表共享? –

+0

这三个empid显示为:(PK,int,非空) – aryan