Как установить sh ограничение ссылочной целостности? - PullRequest
0 голосов
/ 06 апреля 2020
    1 create table pointofinterest(
    2 pointid number not null,
    3 describe varchar(30),
    4 opentime varchar(30),
    5 closetime varchar(30),
    6 townid varchar(30),
    7 constraint pk primary key (pointid),
    8 constraint  fk foreign key(townid) references pointofinterest(townid)); 

Я получил такую ​​ошибку:

  create table pointofinterest(
     *
   ERROR at line 1:
   ORA-00955: name is already used by an existing object

image

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Ошибка очень понятна, вы пытаетесь создать объект с именем, которое уже есть в вашей БД.

На самом деле вы создаете 3 объекта здесь, вам нужно изменить имя одного из объект:

  1. pointofinterest
  2. pk
  3. fk
0 голосов
/ 06 апреля 2020

Используя только несколько столбцов из этих таблиц (мне лень набирать их все):

SQL> create table town
  2    (townid   number primary key,
  3     townname varchar2(30)
  4    );

Table created.

SQL> create table pointofinterest
  2    (pointid  number primary key,
  3     describe varchar2(30),
  4     townid   number constraint fk_point_town references town (townid)
  5    );

Table created.

SQL>

То, что вы сделали неправильно, вы пытались ссылаться на одну и ту же таблицу (pointofinterest); это разрешено, без проблем, но - это не то, что показывает модель.

Ошибка, которую вы получили, просто означает, что у вас уже есть объект с таким же именем, поэтому вы не можете иметь два из них. Это, вероятно, сама таблица pointofinterest или имя ограничения первичного (или внешнего) ключа.

Также Oracle рекомендует использовать varchar**2** тип данных, а не varchar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...