2010-06-04 2 views
0

자동으로 할당하는 기본 키 (부서 _ ID)가있는 테이블을 만들려고합니다 (어렵지 않음). 그러나 할당은 다른 열 (Department_Name)의 기존 값을 기반으로합니다. 예를 들어 department_name 급여 부서 ID가 1 일 경우 department_ID는 1입니다. 내가 삽입하려고했고 다른 급여 직원을 추가해야한다면 자동 증가하지 않을 것입니다. 값 1을 지정합니다. 내가 찾고있는 제약 조건을 가정하지만, 내가 잘못 생각하거나 쓰는 방법을 모르고있다. 여기까지 내가 무엇을 가지고 :ID가있는 테이블 만들기 관련 테이블의 다른 열이 너무 많습니다.

CREATE TABLE tblDepartment 
(
Department_ID int NOT NULL IDENTITY, 
Department_Name varchar(255) NOT NULL, 
Division_Name varchar(255) NOT NULL, 
City varchar(255) default 'sometown' NOT NULL, 
Building int default 1 NOT NULL, 
Phone varchar(255) NOT NULL, 
PRIMARY KEY (Department_ID)NOT NULL, 
Check (Building >=1 AND Building <= 10) 
) 

CREATE TABLE tblEmployee 
(
Employee_ID int NOT NULL IDENTITY, 
Department_ID int , 
Employee_Name varchar(255), 
Social_Security_Number varchar(255), 
Work_Phone varchar(255), 
Position varchar(255), 
Hire_Date datetime, 
Birth_Date datetime, 
FOREIGN KEY (Department_ID) REFERENCES tblDepartment(Department_ID) 
) 

도와 줘서 고마워!

답변

1

직원 당 부서 기록이 필요 없습니다. 부서 당 하나의 부서 레코드 만 있습니다. Employee 레코드를 삽입 할 때 해당 Department 레코드의 Department.Department_ID 값을 Employee.Department_ID 필드에 삽입합니다.

Department.Department_ID의 자동 증가 필드가 정상이어야합니다.

스키마에 따르면 이미이를 강제하는 제약 조건이 있습니다.

0

tblDepartment를 읽고 그에 따라 키를 설정하는 tblEmployee에 삽입 할 때 TRIGGER가 해결책이 될 수 있습니다.

직원이 부서를 변경하면 어떻게됩니까?

+0

그런 상황에서 트리거가 중복 될 수 있습니다 - 외래 키 제약 조건이 이미 존재하며 트리거를 사용하는 것이 더 바람직합니다. –

+0

나는 그것이 업데이트 문장으로 처리 할 수 ​​있다고 가정하고있다. 아직 시도하지 않았습니다. 그냥 테이블 만들기 작업을 먼저 테스트 해보십시오. – Matt

관련 문제