2014-02-09 4 views
0

테이블을 만든 후에 외래 키를 추가해야합니다. HSQLDB. 테이블을 만든 후 외래 키를 추가하는 동안 오류가 발생했습니다.

나는이 요청을 사용 java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PUBLIC.LESSONS

내가 그것을 어떻게 해결할 수 : 오류가 실행 된 후 ALTER TABLE lessons ADD FOREIGN KEY (id_teacher) REFERENCES teachers (id);

, 내가 얻을?

쿼리를 보내기 : Statement statement = connection.createStatement(); statement.execute(request);

전체 쿼리 : 당신은 하나 개의 문장으로 함께 전체 스크립트를 보내는 때문에 오류가 반환됩니다

CREATE TABLE lessons (
id int IDENTITY, 
lesson_name varchar(50) NOT NULL, 
id_teacher int NOT NULL, 
id_group int NOT NULL 
); 

CREATE TABLE teachers (
id int IDENTITY, 
teacher_name varchar(50) NOT NULL, 
id_lesson int NOT NULL, 
id_group int NOT NULL 
); 


CREATE TABLE groups (
id int IDENTITY, 
group_name varchar(50) NOT NULL, 
id_lesson int NOT NULL, 
id_curator int NOT NULL 
); 

ALTER TABLE lessons 
ADD FOREIGN KEY (id_teacher) REFERENCES teachers (id) 
ADD FOREIGN KEY (id_group) REFERENCES groups (id); 

ALTER TABLE teachers 
ADD FOREIGN KEY (id_lesson) REFERENCES lessons (id) 
ADD FOREIGN KEY (id_group) REFERENCES groups (id); 

ALTER TABLE groups 
ADD FOREIGN KEY (id_lesson) REFERENCES lessons (id) 
ADD FOREIGN KEY (id_curator) REFERENCES teachers (id); 
+0

하나의'alter table'과 함께 하나 이상의 foreign key를 추가 할 수 없습니다. 각각의 foreign key에 대해 하나의'alter table '을 사용해야합니다. (실제로는 다른 에러 메시지를 야기 할 것입니다) –

답변

0

. 그것은 실행되기 전에 컴파일됩니다. ALTER TABLE 문이 컴파일 될 때 테이블은 아직 작성되지 않았습니다.

각 구문을 별도로 실행하십시오. 또한 앞에서 설명한 것처럼 외래 키당 하나의 ALTER TABLE 문이 필요합니다.