![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уважаемые мастера, подскажите как правильно выполнить запрос [D6, MSSQL]
svt © (2006-10-09 10:14:00)Уважаемые мастера, подскажите как правильно выполнить запрос суть которого в следующем...
есть таблица состящая из двух колонок
id_kod || kod || name ||
id_kod - уникален и автоикрементный
kod - varchar (по идее он не должен тоже повторяться)
name - varchar
задача стоит в том, чтобы в ново-созданной таблице поле kod сделать уникальныйм и при этом проверить на не повторение. Как правильно, да и возможно ли это реализовать в mssql?
svt (2006-10-09 12:26:00) [1]Спасибо за участие в предоставлении ответа . будем пережевывать инфу:)
Stanislav (2006-10-09 11:57:00) [2]svt (09.10.06 10:14)
Как-то неправильно поставлен вопрос
1. нужно написать запрос, который бы исключил повторения присутствующие в таблице ?
2. или все же сделать таблицу запрещающую вводить повторения?
Хотя ответы уже есть и на то и на то :-)
Stanislav (2006-10-09 11:52:00) [3]ЮЮ © (09.10.06 11:38) [9]
:-))
ЮЮ (2006-10-09 11:38:00) [4]svt (09.10.06 11:05) [6]
> как настоящий программист, начинаешь счет с нуля?
не понял суть вопроса?
> есть таблица состящая из двух колонок
> id_kod || kod || name
нулевое первое второе
итого - 2 поля :)
dr Gonzo (2006-10-09 11:16:00) [5]Если не хочется получать Exception, то уникальный индекс
CREATE UNIQUE INDEX IX_Some ON Table ( kod ) WITH IGNORE_DUP_KEY
И желательно добавлять данные в таблицу ТОЛЬКО ЧЕРЕЗ ХП - и там анализировать @@ROWCOUNT, если переменная > 0 то удачная вставка, иначе ошибка.
svt (2006-10-09 11:09:00) [6]если по поводу id_kod то какая разница...kod - не с нуля.... по идее это идентификационный код .... если его брать числовым, то как быть с нулями в начале величины?
svt (2006-10-09 11:05:00) [7]
> как настоящий программист, начинаешь счет с нуля?
не понял суть вопроса?
Desdechado (2006-10-09 10:49:00) [8]> есть таблица состящая из двух колонок
> id_kod || kod || name
как настоящий программист, начинаешь счет с нуля?
Павел Калугин (2006-10-09 10:44:00) [9]> [2] clickmaker © (09.10.06 10:37)
Если поле должно быть уникальным то попытка добавить туда неуникальное значение есть ошибка.
Признаком уникальности есть индекс.
А как обрабатывать возникшую ошибку - ловя зарание - как у тебя, или обрабатывая возникшее исключение - на усмотрение автора программы. Главное всюду единообразно обрабатывать аналогичные ситуации.
Павел Калугин (2006-10-09 10:40:00) [10]> [0] svt (09.10.06 10:14)
Если надо в новую таблицу выдрать только уникальные значения поля [kod] - тогда читать проdistinctили проgroup by
Проверить уникальность в существующей таблице можно поиспользовав сочетанияgroup by,having, функцииcount()
clickmaker (2006-10-09 10:37:00) [11]
> Нужно создать уникальный индекс
тогда exception придется отлавливать.
Если добавлять хранимкой, то можно
if not exists (select id_kod from table
where lower(kod) = lower(@Kod))
добавляем
else
возвращаем код или строку ошибки
Stanislav (2006-10-09 10:19:00) [12]Нужно создать уникальный индекс смотри в BOL
Create Index