所以我有2個表格需要插入類似的數據。他們是不同應用程序訪問的員工數據庫。它們是:我需要暫時「存儲」信息,或將查詢放入查詢中,並插入SQL Server 2005中
- dbo_Employees
- dbo_EmpDefaultSchedules
- dbo_EmpUsers
- dbo_EmpDefaultLocation
於是就dbo_Employees
,當你插入一行,主鍵是自動創建的。該欄被稱爲EmpID
。總共有大約22個不同的列被添加到這些不同的表中。他們之類的東西FirstName
,LastName
,Address
,Phone
,等等等等
我試圖創建一個腳本,我可以採取的變量列表中輸入一次他們,並運行該腳本將其添加到最後4張桌子(最後是HR會輸入信息並自己創建的網頁)
唯一給我帶來麻煩的是dbo_EmpDefaultSchedules
。這是因爲我需要從dbo_Employees
(EmpID
)的主鍵插入到dbo_EmpDefaultSchedules
,顯然它只有在腳本的第一部分運行時纔會創建。我的第二部分插入語句是這樣的:
INSERT INTO [Database].[dbo].[EmpDefaultSchedules] (StaffCode, EmpID, LastName, FirstName, Dept, MgrStaffCode, IsMgr, PayrollStatus, PayFrequency, StdHrsWk, EmailAddress)
VALUES (@StaffCode, (select EmpID from [Database].[dbo].[Employees] WHERE StaffCode = @StaffCode), @LastName, @FirstName, @Dept, @MgrStaffCode, @IsMgr, @PayrollStatus, @PayrollFrequency, @StdHrsWk, @EmailAddress)
當我這樣做,我得到這個錯誤:
Subqueries are not allowed in this context. Only scalar expressions are allowed.
我已經看到/閱讀: Subqueries are not allowed in this context. Only scalar expressions are allowed
而且這樣的: MYSQL inserting into multiple tables
而這個: How do I store a value from a sql query into a variable?
這: How do I combine a SELECT + WHERE query with an INSERT query?
但仍不能得到這個工作。
我的道歉,我真的很新的SQL和鏈接的例子並沒有真正對我來說很有意義。我不確定它會返回什麼。那麼SCOPE_IDENTITY是否存儲了創建的最後一個ROW(所有字段)的值?如果是這樣,我將如何指定我想插入下一個表中的字段? – anthony 2012-08-02 19:18:17
它只返回由標識列創建的值。自從你說它是自動生成的,我認爲EmpID是一個縮進列。 – Paparazzi 2012-08-02 20:31:06
事後可以製作一個標識列嗎?沒有改變它的名字? – anthony 2012-08-03 13:17:53