2016-06-20 3 views
0

SQL Server를 처음 사용하여 한 테이블의 외래 키를 다른 테이블의 기본 키에 연결하는 데 어려움이 있습니다. 여기에 내가 가진 무엇 :외래 키를 기본 키에 연결할 수 없습니다.

Create table "Projects" 
(ProjectID Int identity(1,1) primary key, 
ProjectName VarChar(30), 
ProjStartDate smalldatetime, 
) 

그리고 세 번째 테이블에 연결을 시도 :

Create table "HrsWkd" 
(HrsID Int identity(1,1) primary key, 
ProjectID int references Projects(ProjectID), 
HoursWorked int, 
EmpID int references Employees(EmpID) 
) 
를이 내가 다음 두 번째 테이블을 생성

Create table "Employees" 
(EmpID Int identity(1,1) primary key, 
EmpNo Int, 
EmpFName Varchar(30), 
EmpLName Varchar(30), 
JobID int references JobDetails(JobID) 
) 

내 첫 번째 테이블은

입니다

덧붙여 말하자면, (EmpID)는 '직원'의 잘못된 열을 가리킨다는 밑에 붉은 구불 구불 한 선이 있습니다.

나는 다음과 같은이 세 번째 테이블에 데이터를 입력하려고하면 :

메시지 547, 수준 16, 상태 0, 줄 12

:

insert into HrsWkd values 
    (1,1,50), 
    (1,2,75), 
    (2,3,85) 

나는이 메시지가

INSERT 문이 FOREIGN KEY 제약 조건 "FK__HrsWkd__EmpID__68487DD7"과 충돌했습니다. 데이터베이스 "New_AP", 테이블 "dbo.Employees", 열 'EmpID'에서 충돌이 발생했습니다.

명세서가 종료되었습니다.

나는 지난 2 시간 동안 내 머리카락을 꺼내왔다. 나는 그것이 단순한 것이라고 생각하지만, 나는 그것을 볼 수 없다.

감사합니다.

답변

0

twotoast 나는 오랜 시간 동안 SQL Server에 특별히 작동하지 않습니다,하지만 당신은 NULL 직원을 가진 레코드를 삽입하려고합니다.

HrsWkd 테이블을 만드는 동안 NULL 값을 허용해야합니다. 문법에 대해 100 % 확실하지 않습니다. 테이블을 만드는 동안 이와 비슷한 것입니다.

CREATE TABLE "HrsWkd" (
    HrsID INT IDENTITY(1,1) PRIMARY KEY, 
    ProjectID INT FOREIGN KEY REFERENCES Projects(ProjectID), 
    HoursWorked INT, 
    EmpID INT NULL FOREIGN KEY REFERENCES Employees(EmpID) 
) 

그렇지 않으면 기본 FK 제약 조건을 위반합니다.

+0

제안 해 주셔서 감사합니다. 나는 그것을 시도하고 문제가 남아있다. 나는 그 문제를 잘못 파악했다고 생각한다. 실제 문제는 "HrsWkd"테이블과 마지막 라인 인 Employees (EmpID)에 링크되어있는 것으로 보입니다. HrsWkd 테이블에 EmpID에 대한 링크가 마음에 들지 않아 잘못된 열이라고 표시됩니다. . . . . . – twotoast

+0

테이블 설정을 복제 한 후에 바보 같은 대답을 발견했습니다. 하지만 MariaDB를 사용하여 로컬 컴퓨터에서 실행하려면 약간 수정해야합니다. 그것은 효과가 있지만 다른 데이터베이스 엔진을 사용하고있다. SQL Server와 관련이 있고 테스트 할 기계가 없습니다. – andre

0

그래서 문제가 무엇인지 알아 냈습니다. 나는 그것이 너무 명백하기 때문에 그것을 언급하는 것이 거의 당혹 스럽다 - 그러나 그것은 장래에 다른 누군가를 도울지도 모른다.

기본 데이터와 외부 데이터 간의 링크가 좋았습니다. 문제는 데이터를 입력하는 것이 었습니다.

  1. 나는 '프로젝트'에서 'HrsWkd'에서 참조하려고했던 모든 데이터를 추가하지 않았으며 둘째로;
  2. 열이 설정된 순서대로 'HrsWkd'에 데이터를 입력하지 않아 잘못된 데이터를 추가하려고했습니다. 나는 테이블을 너무 많이 사용하여 다른 주문/결과를 시도해 보았습니다. 추가하려고 시도했을 때 더 이상 내 데이터가 일치하지 않습니다.

아 글쎄,이 뭔가가 나는 것입니다 (희망)을 다시하지 않을 - 그래서 '훌륭한 학습 기회를'!!!!

관련 문제