Oracle 缺少左括号时出错?
您正在尝试在不指定列名的情况下创建主键Oracle 缺少左括号时出错?,oracle,Oracle,您正在尝试在不指定列名的情况下创建主键 CREATE TABLE Transaction (Portfolio_Number NUMBER(7,0) CONSTRAINT NN_Portfolio_Number NOT NULL, CONSTRAINT FK_Portfolio_Number FOREIGN KEY (Portfolio_Number) REFERENCES Portf
CREATE TABLE Transaction
(Portfolio_Number NUMBER(7,0) CONSTRAINT NN_Portfolio_Number NOT NULL,
CONSTRAINT FK_Portfolio_Number FOREIGN KEY
(Portfolio_Number) REFERENCES Portfolio(Portfolio_Number),
CONSTRAINT PK_Portfolio_Number PRIMARY KEY,
Stock_Code VARCHAR2(50) CONSTRAINT NN_Stock_Code NOT NULL,
CONSTRAINT FK_Stock_Code FOREIGN KEY
(Stock_Code) REFERENCES Stock(Stock_Code),
CONSTRAINT PK_Stock_Code PRIMARY KEY,
Transaction_Date DATE DEFAULT SYSDATE
CONSTRAINT PK_Transaction_Date PRIMARY KEY
CONSTRAINT NN_Transaction_Date NOT NULL,
Exchange_Code VARCHAR2(4) CONSTRAINT NN_Exchange_Code NOT NULL,
CONSTRAINT FK_Exchange_Code FOREIGN KEY
(Exchange_Code) REFERENCES Exchange(Exchange_Code),
Broker_Number NUMBER(7,0) CONSTRAINT NN_Broker_Number NOT NULL,
CONSTRAINT FK_Broker_Number FOREIGN KEY
(Broker_Number) REFERENCES Broker(Broker_Number),
Buy_Sell CHAR(1) CONSTRAINT NN_Buy_Sell NOT NULL,
Quantity NUMBER(7,0) CONSTRAINT CK_Quantity CHECK (Quantity > 0)
CONSTRAINT NN_Quantity NOT NULL,
Price_Per_Share NUMBER(6,2) CONSTRAINT NN_Price_Per_Share NOT NULL);
这是错误的。右边应该是这样的
, CONSTRAINT PK_Portfolio_Number PRIMARY KEY,
接下来要注意的是,您正试图为同一个表创建两个主键,这是不可能的。如果两列都需要主键,则需要在同一语句中指定它们
, CONSTRAINT PK_Portfolio_Number PRIMARY KEY(Portfolio_Number),
您似乎迷失在太多分散在代码中的约束中
- 一个表只能有一个主键约束;你有三个。如果它是一个复合主键,那么所有列都应该放在同一个
子句中(参见我的示例)CONSTRAINT
- 不能将约束与列混合使用;如果使用它们,请将所有这些大纲约束放在脚本末尾(就像我所做的那样)
, CONSTRAINT PK_Portfolio_Number PRIMARY KEY(Portfolio_Number, Stock_Code),
CREATE TABLE Transaction
(
Portfolio_Number NUMBER (7, 0) CONSTRAINT NN_Portfolio_Number NOT NULL,
Stock_Code NUMBER (7, 0) CONSTRAINT NN_Stock_Code NOT NULL,
Transaction_Date DATE
DEFAULT SYSDATE
CONSTRAINT NN_Transaction_Date NOT NULL,
Exchange_Code VARCHAR2 (4) CONSTRAINT NN_Exchange_Code NOT NULL,
Broker_Number NUMBER (7, 0) CONSTRAINT NN_Broker_Number NOT NULL,
Buy_Sell CHAR (1) CONSTRAINT NN_Buy_Sell NOT NULL,
Quantity NUMBER (7, 0)
CONSTRAINT CK_Quantity CHECK (Quantity > 0)
CONSTRAINT NN_Quantity NOT NULL,
Price_Per_Share NUMBER (6, 2) CONSTRAINT NN_Price_Per_Share NOT NULL,
--
CONSTRAINT PK_Transaction_Date PRIMARY KEY
(portfolio_number, transaction_date, stock_code),
CONSTRAINT FK_Portfolio_Number FOREIGN KEY
(Portfolio_Number)
REFERENCES Portfolio (Portfolio_Number),
CONSTRAINT FK_Stock_Code FOREIGN KEY
(Stock_Code)
REFERENCES Stock (Stock_Code),
CONSTRAINT FK_Exchange_Code FOREIGN KEY
(Exchange_Code)
REFERENCES Exchange (Exchange_Code),
CONSTRAINT FK_Broker_Number FOREIGN KEY
(Broker_Number)
REFERENCES Broker (Broker_Number)
);