Почему мой столбец FK и указанный столбец должны иметь одинаковый тип? - PullRequest
0 голосов
/ 29 августа 2018

Предположим, у меня есть две таблицы, которые имеют отношение:

  1. сообщения
  2. комментарии

Моя таблица posts имеет столбец id типа bigint, а мой внешний ключ comments.post_id имеет тип integer.

Что может пойти не так? Почему рекомендуется также comments.post_id иметь тип bigint?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

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

0 голосов
/ 29 августа 2018

Big int может достигать 9 223 372 036 854 775 807, а int - только 2 147 483 647. Поэтому, если ваши данные станут достаточно большими, чтобы превзойти 2 147 483 647, например, например, 2 147 483 648, вы больше не сможете ссылаться на свой пост в столбце comments.post_id.

...