Уникальное ограничение SQL - PullRequest
       18

Уникальное ограничение SQL

1 голос
/ 12 сентября 2011

У меня есть таблица Person с полями Code(varchar), Name(varchar) и Active(bit). При поиске Person возвращаются только активные записи, а при удалении Person я устанавливаю Active = false, чтобы он не отображался в моем поиске.

Проблема в том, что я добавил уникальное ограничение в поля Code и Name, так что в каждом из них может быть только одно Person. Проблема в том, что теперь пользователь не видит Person в поиске (потому что его актив имеет значение false) и пытается добавить тот же Person, но ограничение Unique мешает ему это сделать.

Есть ли способ сохранить ограничение Уникальность и, возможно, добавить проверку к Active, чтобы я все еще мог добавить это Person, если оно ранее было установлено как active = false? Я знаю, что простое решение здесь состоит в том, чтобы просто полностью удалить запись, но для целей данных мне нужно сохранить запись, а не удалять ее, следовательно, только установив active = false.

спасибо

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011

Нет.Если вы применяете уникальное ограничение к полю (или полям), тогда не будет иметь дубликатов данных.

Теоретически вы можете применить уникальное ограничение ко всем трем своим полям, но это помешает вамвозможность «удалить» человека, если тот же человек существовал в таблице и уже был «удален» (с активным значением false).

Я бы лично заархивировал данные, а не имел «активного» поляесли это твоя заботаСоздайте новую таблицу и вставьте туда удаления, чтобы сохранить данные и удалить их из существующей таблицы «Персона».

0 голосов
/ 12 сентября 2011

Как насчет ...

Снять ограничение и подсчитать в таблице.Перед вставкой просто сделайте подсчет в таблице, чтобы убедиться, что нет повторяющихся записей.

С уважением

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