Первичный ключ ВСЕГДА уникален.
Почему вы не хотите, чтобы он был уникальным? Похоже, вы открываете ключ за пределами базы данных, что PK каким-то образом виден, и некоторые пользователи думают, что он должен вести себя по-другому. Если это так, то это действительно плохая практика.
Это типичный случай пресловутых «естественных ключей». Это катастрофа, ожидающая своего часа; Я не люблю бомбы замедленного действия. Я был категорически против них в течение некоторого времени. Хорошо, что их учат в школах, так что вы знаете, что нельзя использовать в реальном мире .
Теперь решение. Если обнаружено product_id
, то это вообще не должен быть ПК. Решение?
- Создайте новый столбец (
id
может быть?), Который является внутренним, уникальным и не отображается для пользователя, сохраняя при этом product_id
. Этот новый столбец может сначала иметь то же значение, что и product_id
. - Измените все ссылки FK из других таблиц на новый столбец
id
. - Затем удалите ограничение PK из
product_id
и делайте с ним все, что хотите. - Добавьте ограничение PK в новый столбец
id
.