내가 루프에서 시도에 삽입] T2 모든 행되지 T2
난에서 코드를 생성하고 같이 T2에서 현재 사용하지 않는 T2에 T1의 모든 레코드를 삽입하려고에서 T2
declare @Part VARCHAR(255),
@GenValue VARCHAR(255),
@x INT
set @x = (select count(*) from T1)
WHILE @x >=0
BEGIN
EXEC [dbo].[usp_GenInd] @GenValue OUT,@GencCode = 'TKM', @GencIncrement = 1
set @Part = @GencValue
INSERT INTO dbo.T2
SELECT @Part AS [part],
[Prod_Code] + Column_Header AS [identifier],
[part_rev] = NULL,
'!' AS [u_version],
a.[Descr] AS [descr],
GETDATE() AS [last_updated],
'ME' AS [last_upd_user],
'EA' AS [basic_unit],
[source] = NULL,
'MAIN' AS [level_1],
'GROUP' AS [level_2],
'ME' AS [user_created],
'20' AS [status],
[Prod_Code] AS [master_part],
[drawing_no] = NULL
FROM [dbo].T1 a
LEFT JOIN dbo.T2 b
ON a.Prod_Code + a.Column_Header = b.part
WHERE b.part is null
END
의 식별자로 저장된 프로 시저 나는 내가 저장된 프로 시저에서 발생하고있는 @part 변수입니다 T2에 기본 키 위반 말을 점점 오류를 유지.
실제로 느린뿐만 아니라 null보다 왼쪽 커서가 커서보다 빠르다고 생각했습니다.
는 T1에
왜이 값을 저장 프로 시저에서 생성해야합니까? 디자인에서는 기본 키의 일부를 생성하기 위해 스토어드 프로 시저를 호출해야하므로 걸려있다. 나는 그것이 아주 좋은 디자인 선택이 아니라고 말해야 만합니다. –
@SeanLange에 동의합니다. 단순한 디자인은 주요 위반 사항을 제거해야합니다. 이미 존재하지 않는 레코드를 삽입하는 일반적인 개념은 MERGE 명령을 제안합니다. 초고속이며 이와 비슷한 것을 위해 설계되었습니다. 테이블 디자인 및 사용 사례에 대한 구체적인 내용이 없으므로 '큰 그림'을하려고하는 것이 너무 어렵 기 때문에 답변을 게시하지 않습니다. –