Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите создать уникальное составное поле 
:(
    Опции темы
azalia
Дата 1.5.2014, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



Всем доброго времени суток и с Первомаем! :) Помогите советом.
Нужно создать постоянное уникальное составное поле Number и вернуть его клиенту. Причем ID для этих целей не подходит, т.к. его значения можно упорядочить заново спец.командой, после того как записи будут удалены по какой-то причине.
Т.е. задача следующая: Клиент, имеющий свой IDclient записывает в Таблицу 1 значение Name и получает уникальный номер Number, который должен содержать в своем значении наименование CodeName и порядковый номер (который должен откуда-то браться).

Например,
Таблица1
ID int, identity (PK)
Number UNIQUE
Date datetime
Name   varchar(30)
IDclient int (FK)

Таблица 2
IDcode int, identity (PK)
CodeName char(3)

Taблица3
IDclient int, identity (PK)
ClientName varchar(30)
IDcode int (FK)

Таблицы связаны по ID. Клиенты (IDclient) имеют свои коды (IDcode).

Я пробовала делать вычисляемое поле. Но тогда приходится в Таблицу 1 добавлять искусственно столбец Code (т.к. нельзя сделать подзапрос) и заранее записывать туда нужное значение и объединять это поле с ID. Вроде бы все уникально получается, но проблема в том, что вычисляемый столбец формируется динамически, и если ID вдруг поменяется, то условие -постоянное уникальное составное поле Number - нарушается.
Пробовала вместо ID использовать дату Date. Но тогда нет гарантий, что 2 клиента одновременно не попробуют сделать запись. Значит надо как-то еще обрабатывать ошибки сервера и сообщать клиенту, чтобы он попробовал записать снова, в результате чего сформируется новая дата. Какие ошибки возвращает mssql в случае неуникальности я не знаю, и как их обрабатывать тоже.

Вообще, я хотела бы еще узнать, существует ли какое-нибудь типовое решение подобной задачи?
Или может быть для поля Number создать какую-нибудь функцию?
PM   Вверх
Akina
Дата 3.5.2014, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Ни хрена не понять...
Цитата(azalia @  1.5.2014,  22:44 Найти цитируемый пост)
Т.е. задача следующая

Это не задача, а Ваши попытки её решать. 

Абстрагируйтесь от всего - особенно от того, что уже сделано, - и сформулируйте-таки именно задачу.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.1484 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.