Ошибка «отсутствует правильная скобка» - Oracle - PullRequest
0 голосов
/ 17 апреля 2019

Когда я создаю этот код:

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 ]

1 голос
/ 17 апреля 2019

Как уже отмечали другие, вы должны повторить столбец FK с синтаксисом constraint ... в конце.Вы можете опустить его, когда объявляете встроенное ограничение 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
);

Опять же, нет , после определения столбца.Я переместил столбец в другую позицию, чтобы было более очевидно, что это часть определения столбца, а не ограничение в конце таблицы.

1 голос
/ 17 апреля 2019

вам не хватает названия столбца

    CONSTRAINT FK_PersonOrder FOREIGN KEY (columnename)
    REFERENCES  PEMBELI_9223(id_pembeli);
0 голосов
/ 17 апреля 2019

Вы забыли сказать, какой столбец является внешним ключом (я думаю, id_pembeli)

constraint fk_idpembeli  FOREIGN KEY (id_pembeli) references PEMBELI_9223(id_pembeli)
0 голосов
/ 17 апреля 2019

Должно быть так:

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
                       ^
...