Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Гибкая уникальность [D5, IB6.x]


Andrey V. ©   (2004-02-03 20:05:00) 

Понятно , что для предотвращения добавления дубликатов
заводится уникальный индекс.
А как Вы поступаете в случае, если некое поле не должно дублироваться
если оно больше 0, а 0, типа , может существовать у многих записей ?


Sandman25   (2004-02-05 10:38:00) [1]

[11] Andrey V. © (04.02.04 22:21)

Очевидно, что ХП может проверить на вставляемое значение, и если это 0, то на уникальность не проверять.


Andrey V.   (2004-02-04 22:21:00) [2]


> Sandman25 © (04.02.04 13:19) [8]


В том-то и дело, что НУЛЮ разрешено повторяться , а БОЛЬШЕ нуля - нет.
Ну и конечно речь идет не о первичном ключе.

Всем - спасибо, сделаю ч/з триггер+хп.


Sandman25   (2004-02-04 13:25:00) [3]

[9] Sergey_Masloff (04.02.04 13:20)

Согласен. Я всего лишь ответил на вопрос. Кстати, через триггеры надежнее, так что в критических по безопасности задачах лучше через них. А то вдруг кто-то из программеров в другой ХП забудет, что нужно вызывать данную ХП, и вставит данные напрямую в таблицу.


Sergey_Masloff   (2004-02-04 13:20:00) [4]

Sandman25 © (04.02.04 13:19) [8]
[7] Vladimir_Shalamberidze@yandex.ru (04.02.04 13:12)

>Триггер вызывает хранимую процедуру, которая raise exception, >если в таблице уже есть вставляемое/изменяемое значение
ИМХО изврат

Vlad © (03.02.04 20:13) [1] как мне кажется предлагает оптимальный вариант


Sandman25   (2004-02-04 13:19:00) [5]

[7] Vladimir_Shalamberidze@yandex.ru (04.02.04 13:12)

Триггер вызывает хранимую процедуру, которая raise exception, если в таблице уже есть вставляемое/изменяемое значение


Vladimir_Shalamberidze@yandex.ru   (2004-02-04 13:12:00) [6]

Посмотрю я как вы это через триггер сделаете :)


asp   (2004-02-04 10:00:00) [7]

Johnmen © (04.02.04 09:51) [5]> ?
Ладно. Как-нибудь посмотрю на описание CHECK...


Johnmen   (2004-02-04 09:51:00) [8]

>asp © (04.02.04 09:48)

С пом. констрейнта типа CHECK.


asp   (2004-02-04 09:48:00) [9]

Johnmen © (04.02.04 09:41) [3]> В Interbes"е почти 0 и заинтересовало след. как это c помошью CONSTRAINT"ов?


Johnmen   (2004-02-04 09:41:00) [10]

1. С помощью триггеров.
2. С помощью констрейнтов.


Alex_Bredin   (2004-02-04 09:34:00) [11]

раз есть такая необходимость, то это уже не первичный ключ
заводится еще одно поле, уникальное и оно служит ключом


Vlad   (2004-02-03 20:13:00) [12]

Вставляй записи не напрямую в таблицу, а через ХП, и в ней отслеживай все что угодно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо