2015-09-16 1 views
0

Я использую postgres, и мне нужен дополнительный ключ или аналогичная концепция. Я использую первичный ключ в поле id. Помимо первичного ключа, я создаю полезный «диалоговый идентификатор», такой как «OH-15-001».Как обеспечить, чтобы значение поля никогда не использовалось снова, даже если оно удалено?

Я хотел бы убедиться, что указанный выше вторичный ключ используется только один раз, даже если он уничтожен базой данных. Я создал алгоритм для генерации этих идентификаторов, но я не хочу сохранять их в другой таблице. Мне интересно, есть ли функция в Postgres, чтобы обеспечить уникальное поле, даже если оно удалено? (аналогично полю id)

+1

Единственное, о чем я могу думать: на самом деле не удалять эти строки, а просто отмечать их как удаленные (и, например, создавать представление, которое фильтрует их) –

+0

То точно, что я решил. Если вы напишете, что я приму –

ответ

0

A PRIMARY KEY не гарантирует уникальность в отношении удаленных предыдущих значений. Вы всегда будете получать новый уникальный идентификатор, если вы создадите его из последовательности, но ничто не мешает вам вручную вставить запись с ранее удаленным идентификатором.

Можете ли вы использовать последовательность как часть алгоритма генерации идентификатора? (что плюс ограничение UNIQUE будет вести себя точно так же, как первичный ключ)

+0

Спасибо за очень четкие детали! –

 Смежные вопросы

  • Нет связанных вопросов^_^