我在Oracle中创建一个新的表时设置了主关键字,可是最后一步完成时
却总是提示我说:“ORA-02261:表中已存在这样的唯一关键字或主键”,可是我
并没有设置其他的主键或者是重名的列啊,而且老是出这个问题。把主关键字设置取消掉就没问题了,这是为什么?应该怎么设置主键啊?
附生成的SQL:
CREATE TABLE "SYSTEM"."STUDENT" ("S_ID" VARCHAR2(10) NOT NULL,
"PASSWORD" VARCHAR2(12) DEFAULT 000000 NOT NULL, "NAME"
VARCHAR2(12) NOT NULL, "SEX" NUMBER(1) DEFAULT 1 NOT NULL,
"AGE" NUMBER(3) NOT NULL, "STATE" NUMBER(1) DEFAULT 0 NOT
NULL, "ADDRESS" VARCHAR2(50) NOT NULL, "PHONE" VARCHAR2(11)
NOT NULL, "MOBILE" VARCHAR2(11) NOT NULL, "EMAIL"
VARCHAR2(30) NOT NULL, "REMARK" VARCHAR2(100) NOT NULL,
CONSTRAINT "S_ID" PRIMARY KEY("S_ID"),
CONSTRAINT "S_ID" UNIQUE("S_ID"))
TABLESPACE "BUAASYS" PCTFREE 5 PCTUSED 40 INITRANS 2
STORAGE ( INITIAL 24576 NEXT 49152 PCTINCREASE 0)
却总是提示我说:“ORA-02261:表中已存在这样的唯一关键字或主键”,可是我
并没有设置其他的主键或者是重名的列啊,而且老是出这个问题。把主关键字设置取消掉就没问题了,这是为什么?应该怎么设置主键啊?
附生成的SQL:
CREATE TABLE "SYSTEM"."STUDENT" ("S_ID" VARCHAR2(10) NOT NULL,
"PASSWORD" VARCHAR2(12) DEFAULT 000000 NOT NULL, "NAME"
VARCHAR2(12) NOT NULL, "SEX" NUMBER(1) DEFAULT 1 NOT NULL,
"AGE" NUMBER(3) NOT NULL, "STATE" NUMBER(1) DEFAULT 0 NOT
NULL, "ADDRESS" VARCHAR2(50) NOT NULL, "PHONE" VARCHAR2(11)
NOT NULL, "MOBILE" VARCHAR2(11) NOT NULL, "EMAIL"
VARCHAR2(30) NOT NULL, "REMARK" VARCHAR2(100) NOT NULL,
CONSTRAINT "S_ID" PRIMARY KEY("S_ID"),
CONSTRAINT "S_ID" UNIQUE("S_ID"))
TABLESPACE "BUAASYS" PCTFREE 5 PCTUSED 40 INITRANS 2
STORAGE ( INITIAL 24576 NEXT 49152 PCTINCREASE 0)
CONSTRAINT "S_ID" UNIQUE("S_ID")) 大侠,两个约束的取名相同,应该是不行的吧
即使可能对应的对象是同意个S_ID
估计前面的错误也是因为对Oracle中“约束条件”概念不清楚造成的呵呵……
可以先创建表,然后用alter table add constraint pk_name primary key(col_name ... ) using index,你试一下,语法不一定对。
@Column(nullable = false, unique = true, name = "name") 把 unique 去掉