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