안녕하십니까, 기본 키와 외래 키가있는 테이블을 만들고 싶습니다. 그러나 외래 키는 동일한 테이블의 기본 키를 참조합니다. 나는 온라인을 읽고 이런 제약 조건을 추가하기 위해 먼저이 제약 조건을 없애고 데이터를로드 한 다음 ALTER 명령을 사용하여 제약 조건을 추가해야한다고 알았습니다. 그러나 이것은 효과가없는 것 같습니다. 다음은 쿼리 :같은 테이블의 기본 키를 참조하는 외래 키 제약 조건을 추가하는 방법 (자체 참조)
DROP TABLE employee;
CREATE TABLE employee (
fname varchar(15) not null,
minit varchar(1),
lname varchar(15) not null,
ssn char(9),
bdate date,
address varchar(50),
sex char,
salary decimal(10,2),
superssn char(9),
dno integer(4),
primary key (ssn),
foreign key (superssn) references employee(ssn),
foreign key (dno) references department(dnumber)
);
이 나는 테이블에 데이터를로드하는 방법입니다.
LOAD DATA LOCAL INFILE "employee.dat"
INTO TABLE employee
FIELDS ENCLOSED BY "\"" TERMINATED BY ","
;
이 작업을 수행하는 방법에 대한 힌트를 제공해 주시면 대단히 감사하겠습니다.
무엇이 작동하지 않습니까? 제약 조건이 적용되는 동안 데이터를로드 할 수없는 이유는 행이 생성 될 때 부모가 항상 존재하도록 입력 행을 정렬하지 않으면 (대부분의 데이터 세트에서는 어렵거나 거의 없을 것입니다) 존재하지 않는 상위 행에 대한 키 위]. 위의 'CREATE TABLE'에는 제약 조건이 포함되어 있습니다. FK 제약없이 테이블을 생성하고 데이터를로드 한 다음 ALTER TABLE으로 추가하십시오. –
Michael, 오류 코드 1452가 발생합니다. NULL 인 외래 키 열에 값이 있습니다. 이것이 어떤 문제를 일으킬 지 모르겠습니다. – Stranger
왜 트리거를 사용하지 않습니까? – Kermit