0

这是我尝试执行的:

CREATE TABLE "order" (
    "o_id" INTEGER not null primary key,
    "c_id" INTEGER,
    PRIMARY KEY (o_id),
    FOREIGN KEY (c_id) REFERENCES customer(c_id)
);

执行上述 SQL 命令时出现此错误:

错误代码 -1,SQL 状态 42Z93:约束“SQL120326130633321”和“SQL120326130633320”具有相同的列集,这是不允许的。

在上面的 SQL 命令之前,我执行了这个:

CREATE TABLE "customer" (
    "c_id" INTEGER not null primary key,
    "c_first" VARCHAR(30),
    "c_last" VARCHAR(30)
);

编辑(解决方案):

我想我修好了。

首先,我不得不删除它,PRIMARY KEY(o_id)因为它基本上重复了我在 SQL 命令第 2 行输入的内容,o_id INTEGER not null primary key所以它抱怨我试图为同一列创建主键两次。

其次,在修复之后,另一个错误浮出水面,告诉我CUSTOMER找不到表。也许问题是我在CREATE TABLE尝试执行时在表名'customer'周围使用了逗号(“...”)。

我删除了“客户”表并重新创建了它,而没有在 SQL 命令中使用任何引号。

之后我为“订单”执行了“创建表”,它起作用了。

奇怪的区别是,当我在 SQL 中使用客户表名周围的引号时,一开始,它的名称在 Netbeans 的 Databases Explorer 中出现的都是小写的。但是当我省略引号时,表名变成了全大写 - 甚至是他们的列名。

4

1 回答 1

1

您要添加两次主键约束。您只需要一次,在一个地方或另一个地方取决于数据库供应商。

于 2012-03-26T17:23:12.697 回答