Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.057 c
5-1145431587
nbv
2006-04-19 11:26
2006.12.17
Как сделать компонент DBAware


2-1164650538
Denis1
2006-11-27 21:02
2006.12.17
закрытие приложения


2-1164148382
Евгений Р.
2006-11-22 01:33
2006.12.17
Копирование на FTP


11-1141245228
Vedun
2006-03-01 23:33
2006.12.17
Модуль KolCompDoc для работы с doc-файлами (by Thaddy)


4-1154970086
Navi
2006-08-07 21:01
2006.12.17
Как получить иконку файла по его расширению?