【问题标题】:HSQLDB. Error with adding a foreign key after creating the table.数据库。创建表后添加外键时出错。
【发布时间】:2014-03-06 15:47:56
【问题描述】:

创建表后,我需要在表中添加外键。

我使用这个请求:ALTER TABLE lessons ADD FOREIGN KEY (id_teacher) REFERENCES teachers (id);

执行后报错:java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PUBLIC.LESSONS

我该如何解决?

发送查询: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);

【问题讨论】:

  • 您不能使用单个alter table 添加多个外键,您需要为每个外键使用一个alter table(但实际上应该会导致不同的错误消息)

标签: java sql foreign-keys hsqldb alter-table


【解决方案1】:

返回错误是因为您将整个脚本作为一个语句一起发送。它在执行之前被编译。编译 ALTER TABLE 语句时,还没有创建表。

分别执行每个语句。同样如前所述,每个外键需要一个 ALTER TABLE 语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多