0
我在sql server 2012中的表上執行批量插入,同時我用max()函數選取最後一個插入的行並將其插入到另一個表中,當我的表從多個數據源獲取數據時如何執行此操作,因爲執行插入次表時存在時間延遲,而插入仍然在主表中發生,因此下一次max()會選取最後一次更新的行,並且我將釋放一些同時不是max()的行仍然插入到主表中。在SQL中有多個輸入源的表上處理批量插入
create table dbo.emp
(
id int primary key identity(1,1),
emp_id int,
name varchar(255),
address varchar(255)
)
create table dbo.empx
(
id int primary key,
emp_id int foreign key references dbo.emp(id),
)
declare @temp int ;
set @temp=1;
while @temp<1000
begin
insert into dbo.emp(emp_id,name,address)values ([email protected],'Ename'+LTRIM(STR(@temp)),'123 Sample Address'+LTRIM(STR(@temp)));
set @[email protected]+1;
insert into dbo.empx select max(dbo.emp.id),max(dbo.emp.emp_id) from dbo.emp
end
輸出條款這麼想的允許外鍵引用,在我的情況下表是創建表dbo.emp ( id int主鍵標識(1,1), emp_id int, name varchar(255), address varchar(255) ) 創建表dbo.empx ( ID INT主鍵, EMP_ID INT外鍵引用dbo.emp(ID), ) –
然後用觸發嘗試..檢查我的更新代碼.. –
我首先想到的是使用觸發器,但每次插入時都會調用觸發器(考慮4lac插入)是不是插入查詢比調用觸發器要輕得多。 –