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

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

Уважаемые мастера, подскажите как правильно выполнить запрос [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


Наверх

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