私のテーブルserialNumber、Orgシリアル番号(123456100)をORGAからORGBに転送し、転送済みとしてマークしますtransferedStatus = 0(在庫あり)transferedStatus = 1(在庫なし)
これが私のクエリですが、大量のシリアル番号(10K)を転送したい場合は遅すぎます...他の方法があることはわかっていますが、どうすればよいですか?!
create table org(
org_id INT NOT NULL IDENTITY(1,1)PRIMARY KEY CLUSTERED,
orgName VARCHAR(10)
)
create table serialNumber(id INT NOT NULL IDENTITY(1,1)PRIMARY KEY CLUSTERED,
org_id INT FOREIGN KEY REFERENCES org,
serialNumber BIGINT,
transferedStatus INT DEFAULT(0),
parentID INT NULL FOREIGN KEY REFERENCES serialNumber)
insert into org values('ORG A')
insert into org values('ORG B')
insert into org values('ORG C')
insert into org values('ORG D')
insert into org values('ORG E')
insert into serialNumber values(1,123456100,0,NULL)
insert into serialNumber values(1,123456101,0,NULL)
insert into serialNumber values(1,123456102,0,NULL)
insert into serialNumber values(1,123456103,0,NULL)
insert into serialNumber values(1,123456104,0,NULL)
insert into serialNumber values(1,123456105,0,NULL)
declare @parentID int
declare @From_org_id int
declare @To_org_id int
declare @serialNumber BIGINT
set @From_org_id = 1
set @To_org_id = 2
set @serialNumber = 123456101
/* mark the serialNumber as transfered */
UPDATE serialNumber
set
transferedStatus = 1
Where
org_id = @From_org_id
AND serialNumber = @serialNumber
/* find ID of the source of Serial Number */
select TOP 1 @parentID = id
FROM serialNumber
Where org_id = @From_org_id
AND transferedStatus = 1
AND serialNumber = @serialNumber
ORDER BY id DESC
insert into serialNumber values(@To_org_id,@serialNumber,0,@parentID)