2013-04-16 93 views
0
CREATE TABLE P_OWNER(
    OWNERID    CHAR(5) NOT NULL, 
    LNAME     VARCHAR2(50) NOT NULL, 
    FNAME     VARCHAR2(30) NULL, 
    SSN     CHAR(9) NULL, 
    EMAIL     VARCHAR2(50) NULL, 
    CONSTRAINT   P_OWNER_PK  PRIMARY KEY(OWNERID), 
    CONSTRAINT   P_OWNER_AK1  ALTERNATE KEY(SSN), 
    CONSTRAINT   P_OWNER_AK2  ALTERNATE KEY(EMAIL) 
    ); 

CREATE TABLE P_PROPERTY(
    PROPERTYID   CHAR(5) NOT NULL, 
    STREET1    VARCHAR2(50) NOT NULL, 
    STREET2    VARCHAR2(50) NULL, 
    CITY     VARCHAR2(50) DEFAULT 'FITCHBURG', 
    STATE     CHAR(2) DEFAULT 'MA', 
    ZIP     CHAR(10) NULL, 
    SQFOOTAGE    NUMBER(5,0) NULL, 
    HAS_AC    CHAR(1) NULL, 
    ISHOUSE    CHAR(1) NOT NULL, 
    CONSTRAINT   P_PROPERTY_PK    PRIMARY KEY(PROPERTYID), 
    CONSTRAINT   P_PROPERTY_ADDRESS_AK1  ALTERNATE KEY(CITY, STATE, STREET1, STREET2, ZIP) 
    ); 





Error at Command Line:8 Column:57 
Error report: 
SQL Error: ORA-00907: missing right parenthesis 
00907. 00000 - "missing right parenthesis" 
*Cause:  
*Action: 
+0

錯誤本身是不言而喻的 – Abubakkar

+3

@Abu該錯誤並不總是意味着你忘了關閉括號,所以很多時間,它不是.. – Scotch

+0

你是否試圖在同一時間創建表?嘗試一次運行一個create table語句。 – Andrew

回答

2

你想要一個獨特的密鑰,而不是替代

CREATE TABLE P_OWNER(
OWNERID    CHAR(5) NOT NULL, 
LNAME     VARCHAR2(50) NOT NULL, 
FNAME     VARCHAR2(30) NULL, 
SSN     CHAR(9) NULL, 
EMAIL     VARCHAR2(50) NULL, 
CONSTRAINT   P_OWNER_PK  PRIMARY KEY(OWNERID), 
CONSTRAINT   P_OWNER_AK1  UNIQUE(SSN), 
CONSTRAINT   P_OWNER_AK2  UNIQUE(EMAIL) 
); 


CREATE TABLE P_PROPERTY(
PROPERTYID   CHAR(5) NOT NULL, 
STREET1    VARCHAR2(50) NOT NULL, 
STREET2    VARCHAR2(50) NULL, 
CITY     VARCHAR2(50) DEFAULT 'FITCHBURG', 
STATE     CHAR(2) DEFAULT 'MA', 
ZIP     CHAR(10) NULL, 
SQFOOTAGE    NUMBER(5,0) NULL, 
HAS_AC    CHAR(1) NULL, 
ISHOUSE    CHAR(1) NOT NULL, 
CONSTRAINT   P_PROPERTY_PK    PRIMARY KEY(PROPERTYID), 
CONSTRAINT   P_PROPERTY_ADDRESS_AK1  UNIQUE(CITY, STATE, STREET1, STREET2, ZIP) 
); 
2

問題是ALTERNATE KEY嘗試UNIQUE

CREATE TABLE P_OWNER(
    OWNERID    CHAR(5) NOT NULL, 
    LNAME     VARCHAR2(50) NOT NULL, 
    FNAME     VARCHAR2(30) NULL, 
    SSN     CHAR(9) NULL, 
    EMAIL     VARCHAR2(50) NULL, 
    CONSTRAINT   P_OWNER_PK  PRIMARY KEY(OWNERID), 
    CONSTRAINT   P_OWNER_AK1  UNIQUE (SSN), 
    CONSTRAINT   P_OWNER_AK2  UNIQUE (EMAIL) 
    ); 

CREATE TABLE P_PROPERTY(
    PROPERTYID   CHAR(5) NOT NULL, 
    STREET1    VARCHAR2(50) NOT NULL, 
    STREET2    VARCHAR2(50) NULL, 
    CITY     VARCHAR2(50) DEFAULT 'FITCHBURG', 
    STATE     CHAR(2) DEFAULT 'MA', 
    ZIP     CHAR(10) NULL, 
    SQFOOTAGE    NUMBER(5,0) NULL, 
    HAS_AC    CHAR(1) NULL, 
    ISHOUSE    CHAR(1) NOT NULL, 
    CONSTRAINT   P_PROPERTY_PK    PRIMARY KEY(PROPERTYID), 
    CONSTRAINT   P_PROPERTY_ADDRESS_AK1  UNIQUE(CITY, STATE, STREET1, STREET2, ZIP) 
    ); 
0

alternate key (or secondary key)是一個不選擇任何候選人鍵是主鍵( PK)。你不能在Oracle中創建一個備用密鑰,它只是概念。

+0

你可以將它們創建爲唯一密鑰。 –