Кажется, вы потеряли слишком много CONSTRAINT s, разбросанных по всему куску кода.
- таблица может иметь только одно ограничение первичного ключа; у вас есть 3 из них. Если это составной первичный ключ, все столбцы должны быть помещены в одно и то же предложение
CONSTRAINT
(см. Мой пример) - , вы не можете смешивать ограничения со столбцами; если вы используете их, поместите все эти контурные ограничения в конец скрипта (как я сделал)
Я не могу запустить его, так как скучаю по всем таблицам, на которые вы ссылаетесь, но этот код правильно отформатирован, поэтому я надеюсь, что он должен скомпилироваться.
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)
);