【发布时间】:2018-09-01 22:28:39
【问题描述】:
表一:
CREATE TABLE Customer
(CustNo VARCHAR2(8) CONSTRAINT CustNoNotNull NOT NULL,
CustName VARCHAR2(30) CONSTRAINT CustNameNotNull NOT NULL,
Address VARCHAR2(50) CONSTRAINT AddressNotNull NOT NULL,
Internal CHAR(1) CONSTRAINT InternalNotNull NOT NULL,
Contact VARCHAR2(35) CONSTRAINT ContractNotNull NOT NULL,
Phone VARCHAR2(11) CONSTRAINT CPhoneNotNull NOT NULL,
City VARCHAR2(30) CONSTRAINT CityNotNull NOT NULL,
State VARCHAR2(2) CONSTRAINT StateNotNull NOT NULL,
Zip VARCHAR2(10) CONSTRAINT zipNotNull NOT NULL,
CONSTRAINT PK_CUSTOMER PRIMARY KEY (CustNo) ) ;
表二:
CREATE TABLE Facility
(FacNo VARCHAR2(8) CONSTRAINT FacNoNotNull NOT NULL,
FacName VARCHAR2(30) CONSTRAINT FacNameNotNull NOT NULL,
CONSTRAINT PK_FACILITY PRIMARY KEY (FacNo)
CONSTRAINT Unique_FacName UNIQUE(FacName) );
表三:
CREATE TABLE EVENTREQUEST
( EVENTNO VARCHAR2(8) CONSTRAINT EVENTNONOTNULL NOT NULL,
DATEHELD DATE CONSTRAINT DATEHELDNOTNULL NOT NULL,
DATEREQ DATE CONSTRAINT DATEREQNOTNULL NOT NULL,
CUSTNO VARCHAR2(8) CONSTRAINT CUSTNONOTNULL NOT NULL ,
FACNO VARCHAR2(8) CONSTRAINT FACNONOTNULL NOT NULL,
DATEAUTH DATE CONSTRAINT DATEAUTHNULL NULL,
STATUS VARCHAR2(10) CONSTRAINT STATUSNOTNULL NOT NULL,
ESTCOST VARCHAR2(25) CONSTRAINT ESTCOSTNOTNULL NOT NULL,
ESTAUDIENCE VARCHAR2(10) CONSTRAINT ESTAUDIENCENOTNULL NOT NULL,
BUDNO VARCHAR2(8) CONSTRAINT BUDNONULL NULL,
CONSTRAINT PK_EVENTREQUEST PRIMARY KEY (EVENTNO),
CONSTRAINT FK_CUSTNO FOREIGN KEY (CUSTNO) REFERENCES CUSTOMER (CUSTNO),
CONSTRAINT FK_FACNO FOREIGN KEY (FACNO) REFERENCES FACILITY (FACNO),
CONSTRAINT CHECK_EVENTREQUEST_STATUS CHECK(STATUS IN('PENDING','DENIED','APPROVED')));
执行表三时出现此错误:
"指定的约束名称必须是唯一的。*Action: 为约束指定一个唯一的约束名称
如何防止此错误发生?
【问题讨论】:
-
我认为这是 stackoverflow.com/questions/1397671/… 的副本。本质上,约束名称在数据库中必须是唯一的,而不仅仅是在表中是唯一的。至少您有两个名称为 CustNoNotNull。就个人而言,我通常会省略约束名称并允许数据库自动分配它们。另一种常见的模式是在表名前添加 CustomerCustNoNotNull 和 EventRequestCustNoNotNull。
-
谢谢@StevenW.Klassen,我确实添加了约束名称,它按照您的建议创建了表格,但就像您说的那样,让数据库自动分配更好,再次感谢
-
顺便说一句,我建议avoiding the
chardatatype。
标签: oracle oracle11g constraints