&引用;缺少右括号“;错误-Oracle

&引用;缺少右括号“;错误-Oracle,oracle,foreign-keys,ddl,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

创建此代码时:

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

我该怎么办?

您缺少列名

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

您缺少列名

    CONSTRAINT FK_PersonOrder FOREIGN KEY (columnename)
    REFERENCES  PEMBELI_9223(id_pembeli);
应该是这样的:

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
                       ^
应该是这样的:

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
                       ^

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


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


正如其他人所指出的,您必须使用结尾处的
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
);

同样,列定义后没有
。我将列移动到另一个位置,以便更清楚地表明这是列定义的一部分,而不是表末尾的约束

正如其他人所指出的,您必须使用结尾处的
约束…
语法重复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
);

同样,列定义后没有
。我将列移动到另一个位置,以便更清楚地表明这是列定义的一部分,而不是表末尾的约束

这些行号真的是你代码的一部分吗?如果是这样,请删除它们,如果不清理问题中的代码,您可以尝试此方法<代码>创建表TRANSAKSI_9223(ID_TRANSAKSI编号(13)约束idtransaksi_pk主键,Tgl_TRANSAKSI日期约束Tgl_notnull notnull notnull,Total_harga float,ID_pembeli编号(13)约束fk_idpembeli引用pembeli_9223(ID_pembeli))这些行号真的是代码的一部分吗?如果是这样,请删除它们,如果不清理问题中的代码,您可以尝试此方法<代码>创建表TRANSAKSI_9223(ID_TRANSAKSI编号(13)约束idtransaksi_pk主键,Tgl_TRANSAKSI日期约束Tgl_notnull notnull notnull,Total_harga float,ID_pembeli编号(13)约束fk_idpembeli引用pembeli_9223(ID_pembeli))