Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Вниз

Уважаемые мастера, подскажите как правильно выполнить запрос   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
2-1164713743
Organ
2006-11-28 14:35
2006.12.17
ini-настройки из строки


3-1160596997
БогданБ
2006-10-12 00:03
2006.12.17
Поиск по похожему номеру


15-1164232592
Горгер
2006-11-23 00:56
2006.12.17
Книги, которые пишут женщины, могут читать только женщины


2-1164575843
Sat
2006-11-27 00:17
2006.12.17
проблеммы с классом


15-1164478697
dimonf
2006-11-25 21:18
2006.12.17
На чем лудше начать писать портал?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский