Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 缺少左括号时出错?_Oracle - Fatal编程技术网

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)
);