这是我尝试执行的内容:
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命令o_id INTEGER not null primary key
的第2行上键入的内容,所以它抱怨我试图为同一列创建两次主键。 / p>
其次,在此之后修复了另一个错误,告诉我无法找到CUSTOMER
表。也许问题是当CREATE TABLE
试图执行时,我在表名'customer'周围使用了逗号(“...”)。
我删除了'customer'表并在不使用SQL命令中的任何引号的情况下重新创建它。
之后我为'订单'执行'CREATE TABLE'并且它有效。
奇怪的是,当我在SQL中使用客户表名称周围的引号时,首先,它的名称在Netbeans的Databases Explorer中显示为全部小写。但是当我省略引号时,表名变成全部大写 - 甚至是列名。
答案 0 :(得分:1)
您要添加两次主键约束。您只需要在一个地方或另一个地方需要它,具体取决于数据库供应商。