![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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 создать какую-нибудь функцию? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Ни хрена не понять...
Это не задача, а Ваши попытки её решать. Абстрагируйтесь от всего - особенно от того, что уже сделано, - и сформулируйте-таки именно задачу. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |