“缺少右括号”错误 - Oracle

问题描述 投票:0回答:4

当我创建此代码时:

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

我该怎么办?

oracle foreign-keys ddl
4个回答
1
投票

您缺少列名称

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

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

再次,列定义后没有,。我将列移动到不同的位置,以使其更明显,这是列定义的一部分,而不是表末尾的约束。


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
                       ^

0
投票

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

constraint fk_idpembeli  FOREIGN KEY (id_pembeli) references PEMBELI_9223(id_pembeli)
© www.soinside.com 2019 - 2024. All rights reserved.