“缺少右括号”错误-Oracle

时间:2019-04-17 06:10:25

标签: oracle foreign-keys ddl

创建此代码时:

SQL> create table TRANSAKSI_9223(
  2  ID_Transaksi number(13)
  3  constraint idtransaksi_pk primary key,
  4  Tgl_Transaksi date constraint tgl_notnull not null,
  5  Total_harga float,
  6  id_pembeli number(13), constraint fk_idpembeli references PEMBELI_9223(id_pembeli));
id_pembeli number(13), constraint fk_idpembeli references PEMBELI_9223(id_pembeli))
                                                                      *
ERROR at line 6:
ORA-00907: missing right parenthesis

我该怎么办?

4 个答案:

答案 0 :(得分:1)

您缺少列名

    CONSTRAINT FK_PersonOrder FOREIGN KEY (columnename)
    REFERENCES  PEMBELI_9223(id_pembeli);

答案 1 :(得分:1)

正如其他人指出的那样,您必须在末尾使用constraint ...语法重复FK列。内联声明FK约束时,可以忽略它:

create table TRANSAKSI_9223(
  ID_Transaksi number(13)
  constraint idtransaksi_pk primary key,
  Tgl_Transaksi date constraint tgl_notnull not null,
  Total_harga float,
  id_pembeli number(13) references PEMBELI_9223
);

请注意在列定义后缺少的,。您也可以使用该语法省略目标列。它将自动使用目标表的PK列。

您还可以包括约束名称:

create table TRANSAKSI_9223(
  ID_Transaksi number(13)
  constraint idtransaksi_pk primary key,
  Tgl_Transaksi date constraint tgl_notnull not null,
  id_pembeli number(13) constraint fk_idpembeli references PEMBELI_9223,
  Total_harga float
);

同样,在列定义之后不添加,。我将列移到了另一个位置,以使其更明显地表明这是列定义的一部分,而不是表末尾的约束。

答案 2 :(得分:0)

应该是这样的:

CREATE TABLE transaksi_9223
(
   id_transaksi   NUMBER (13) CONSTRAINT idtransaksi_pk PRIMARY KEY,
   tgl_transaksi  DATE CONSTRAINT tgl_notnull NOT NULL,
   total_harga    FLOAT,
   id_pembeli     NUMBER (13)
                     CONSTRAINT fk_idpembeli
                         REFERENCES pembeli_9223 (id_pembeli)
);

即删除逗号,在这里:

  id_pembeli number(13), constraint fk_idpembeli
                       ^

答案 3 :(得分:0)

您忘了说哪列是外键(我猜是id_pembeli)

constraint fk_idpembeli  FOREIGN KEY (id_pembeli) references PEMBELI_9223(id_pembeli)