Могут ли быть два одинаковых значения внешнего ключа у двух объектов?

Ссылка скопирована
1 ответ

Есть две таблицы - Resumes и Works. В Resumes есть поле id serial primary key, в Works - cv_id serial references resumes (id)
Могут ли в таблице Works существовать два или более объектов с одинаковыми значениями cv_id? То есть ссылающиеся на один и тот же экземпляр в таблице таблицы Resume. При попытке вставить второе значение получаю insert or update on table "works" violates foreign key constraint "works_cv_id_fkey"

Дополнительно:

а вы точно вставляете ключ который существует в Resumes? И никакого unique constraints на поле cv_id нет?

  • Может. Приведите как созданы таблицы. Ошибка может означать, что в Resumes нет нужной записи.
  • Дмитрий, точно существует, т.к. ошибку ловлю только при попытке вставить второй объект, а первый в БД сохраняется корректно
    unique constraint нет, вот полная сигнатура поля cv_id в Works
    cv_id serial references resumes (id) ON DELETE CASCADE

    А вот id в Resumes
    id serial primary key,

  • freeExec, если нужной записи нет, она ведь должна кидать ошибку уже при попытке вставить первый экземпляр, а в моем случае так только со вторым
  • Alexander Pikeev, cv_id serial references resumes (id) ON DELETE CASCADE а с чего бы такая сигнатура? cv_id - integer? не?
  • Дмитрий, проглядел, получается он инкерментится при создании, а такого уже в резюме нет, да
  • Дмитрий, отпишите в ответы
  • Alexander Pikeev, да ну. это не ответ, а одно название. помогло и ладно.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Роман IT Ответ

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

    Когда мы говорим о том, что два объекта имеют одинаковые значения внешнего ключа, мы обычно имеем в виду, что у этих объектов есть отношение с одним и тем же объектом в другой таблице. Например, если у нас есть таблица "Заказы" и таблица "Клиенты", и в таблице "Заказы" есть столбец "id_клиента", который является внешним ключом к столбцу "id_клиента" в таблице "Клиенты", то два заказа могут иметь одинаковое значение id_клиента, если они принадлежат одному и тому же клиенту.

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

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

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

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно