2017-08-08 114 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