2

만들려는 Access 데이터베이스가 있습니다. 기본 키를 만들기 위해 테이블에서 두 개의 열을 사용하고 싶습니다.자동 증가 복합 기본 키

Projectbl (ProjectID, ProjectRegion, other columns) 

나는 자동 증가하도록 ProjectID을 원한다. 괜찮아. 지금까지 새 프로젝트를 추가 할 때마다 ProjecID은 그 자체로 증가합니다.

동일한 테이블에서 ProjectRef 인 새 열을 만들고 싶습니다. 여기서 새 번호는 ProjectIDProjectRegion의 합성어입니다.

그래서 예를 들어

ProjectID ProjectRegion OtherCol 
--------------------------------- 
1   500   ... 
2   100   ... 
3   200   ... 
4   500   ... 
5   500   ... 
6   100   ... 

나는 테이블이 실제로 나는 새로운 프로젝트를 추가하는 것을 시도하고있다 그래서

ProjectRef ProjectID ProjectRegion OtherCol 
-------------------------------------------- 
5001  1   500   ... 
1002  2   100   ... 
2003  3   200   ... 
5004  4   500   ... 
5005  5   500   ... 
1006  6   100   ... 

같이 할 다음 projectID 7에 자동 증가됩니다,하지만 ProjectRefProjectReg에 관계없이 'ProjectReg'7이됩니다.

내가 어떻게 실제로 테이블에 ProjectRef를 표시 할 수 있습니다 내가

CREATE TABLE 'Projectbl' 
(
    ProjectID INT(10) NOT NULL AUTO_INCREMENT, 
    ProjectRegion INT(10) NOT NULL, 
    other columns VARCHAR(100), 

    CONSTRAINT ProjectRef 
     PRIMARY KEY ('ProjectRegion', 'ProjectID') 
) 

와 복합 키를 만들 수 있습니다 알아?

+0

어떤 DBMS를 사용하고 있습니까? – jarlh

+0

Access를 사용하고 있으며 쿼리 생성 테이블을 실행할 때마다 Auto_Increment에 구문 오류가 발생합니다. 그러나 auto_increment 전에, 나는 그것을 실행한다. ProjectRef를 표시하고 ProjectID 자동 증가를 원합니다. – DrD4rk

+0

새 레코드가 테이블에 들어오는 방법은 무엇입니까? 대부분 VBA 함수가 필요할 것입니다. 대단히 복잡하지는 않지만이 작업을 수행하는 방법에있어 많은 유연성을 제공합니다. –

답변

3

ProjectRef 열이 없어야합니다. 이것은 데이터베이스 정규화의 기본 규칙을 위반합니다. 프런트 엔드에 ProjectRef을 표시하려면 보유중인 열에서 프런트 엔드를 계산하십시오.

+1

고맙습니다. :). 이것은 의미가 있습니다. 복합 기본 키를 만들고 ProjectRef 열이없고 프런트 엔드에 다른 사용자에게 표시되도록 계산합니다. – DrD4rk

+0

복합 기본 키가 필요없고 원하지 않습니다. ProjectID는 자동 번호이므로 ProjectRegion과 ProjectID의 모든 조합은 고유합니다. – Rene