这是我尝试执行的:
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 中出现的都是小写的。但是当我省略引号时,表名变成了全大写 - 甚至是他们的列名。