2011-06-14 3 views
0

자동 증분 ID를 여러 양식에서 동일하게 만드는 가장 좋은 방법은 무엇입니까?자동 증분 ID를 여러 양식으로 전달

기본적으로 SQL Server를 백엔드로 사용하는 VB .NET을 사용하고 있습니다. 데이터를 삽입하는 몇 가지 저장 프로 시저를 작성한 다음 프런트 엔드에서 저장 프로 시저를 호출합니다. 3 가지 양식이 있으며 첫 번째 양식이 제출되면 자동 ID를 생성 한 다음 사용자를 두 번째 양식으로 가져갑니다.

두 번째 형식에는 별도의 삽입 저장 프로 시저가 있습니다. 첫 번째 폼이 생성되고 일관성있게 유지되는 ID를 가져 오는 방법이 있습니다. 또는 양식을 제출 한 후 변수를 두 x 째 양식으로 호출해야합니다.

나는 @@Identity에 대해 읽었지 만, 첫 번째 양식 데이터를 제출하고 나서 두 번째 세션 데이터를 제출할 때만 다른 세션이 아니기 때문에 그 세션 내에서 ID를 수집합니다.

감사

+1

@@ ID를이 용도로 사용하지 마십시오. 신뢰할 수 없습니다. 대신 scope_identity() 또는 출력 절을 사용하십시오. – HLGEM

답변

0

저장된 proc은 출력 절 또는 scope_identity()를 사용하여 응용 프로그램에 변수로 저장하는 출력 변수로 ID 값을 반환 할 수 있습니다. 사용할 수 있습니다. 그 사람이 다른 레코드로 이동할 때, 그리고 관련된 모든 포맷이 레코드를 삽입 한 후에, 당신이 돈을 들이지 않도록, 다른 시간에 우연히 그것을 사용할 때, 당신은 확실한 것을 제거하기를 원할 것입니다.

신뢰할 수없고 다른 사람이 ID를 사용하여 다른 테이블에 삽입하는 트리거를 추가하면 잘못된 값을 줄 수 있으므로 대량의 데이터 무결성 문제가 발생할 수 있으므로이 경우 @@ ID를 사용하고 싶지는 않습니다.

+0

내가 뭘하려고했는데 내 저장된 프로 시저에이 코드 줄을 추가했다. mytable에서 ID를 ID를 어디에서 ID = @ id하지만 그때 나는 전달할 ID 매개 변수가 없으므로 프런트 엔드에서 작동하도록하는 방법을 알아낼 수 없었다. 그것. 내가 방금 저장 프로 시저에 id = @@ scope_identity()를 추가해야한다고 말하는가? mytable에서 가져 오는 것을 알 수있다. – Tim

0

이 그것을 할 수있는 가장 좋은 방법은 아니라고 지표 수 있습니다 당신에게 문제의 원인이 있다는 사실. 아마도 대신 DB에서 함수를 사용하여 ID를 반환 한 다음 .net 코드에서 설정하십시오.

자동 증가 ID가있는 경우 레코드가 만들어 질 때만 증가해야합니다. 세 가지 서식으로 세 개의 레코드가 만들어지고 있습니까? 너가 원하는게 그거야? 그렇다면 자동 ID가 확실히 올바른 방법이 아닙니다.

+0

3 가지 테이블이 있습니다. 첫 번째 양식은 자동 생성을 생성하는 하나의 테이블로 제출합니다. 두 번째 양식은 여기에 두 번째 테이블에 제출하는 첫 번째 테이블에서 생성 된 autoid 원하는 및 두 번째 테이블에 추가하려면 원하는 위치입니다.그러나 두 번째 형식은 완전히 새로운 형태입니다. 분명히 설명하지 않으면 im이 – Tim

0

어쩌면 생각해 본 것 같습니까?

은 내가 @@ IDENTITY에 대해 읽어하지만 난 첫 번째 형태의 데이터는 그 다른 세션되지 않을 것 번째에가는 제출하고 이후 있다고는 해당 세션 내에서 ID를 움켜 잡는다.

첫 번째 양식에서 작성한 항목에 의해 생성 된 키를 원하지 않습니까? 두번째 형태에서

는 I 프로 저장된 별도 삽입 잡아 제 형태를 생성하는 방법 ID가 그것이 일치 할 수있다. 또는 양식을 제출 한 후 변수를 두 x 째 양식으로 호출해야합니다.

+0

당신은 아마도 나는 여전히 배움을 배우고 있으며, 나는 내가 아직 무엇을하고 있는지를 완전히 이해하지 못하기 때문에 많은 것을 생각하는 것보다 자신을 발견합니다. 나는 독서하고 내가 무엇을하고 있는지 이해하려고 노력하므로 더 나은 프로그래밍이 될 수있다. 그냥 더 읽을 때 가끔 내가 읽는 것들을 더 읽으십시오 – Tim

+0

저는 저장 프로 시저에 넣은 것을 제외하고는 첫 번째 폼에서 생성 된 키를 얻고 싶습니다 @id = scope_identity() 나는 VB에서 어떻게 전달해야하는지 잘 모르겠습니다. 이드는 두 번째 형식으로 생성했습니다. 글로벌 변수에 대해 읽으려는 것이 옳은 방법인가요? 사용자가 제출 버튼을 클릭 할 때 전역 변수를 만들고 두 번째 양식으로 전달하려면 – Tim

+0

죄송합니다. VB에 대해이 질문에 답하기에 충분하지 않습니다. C#에는 데이터 테이블을 반환하는 저장 프로 시저를 실행하는 데 사용하는 meathod가 있습니다. 삽입 후에 proc를 저장하면 select @@ identity로 표시됩니다. 그러면 C#에서 결과와 같은 것이 있습니다. [0] [0]. – TizzyFoe

관련 문제