Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Rule or something else  [new]
Я Ламер
Guest
Здравствуйте, уважаемый All.
Имеется таблица в которой есть поле IsDefault. Каким образом на уровне сервера можно наложить ограничение, чтобы в этом поле среди всех записей могла быть только одна единица (кроме как instead trigger).
18 фев 04, 12:02    [540892]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Ну, например, сделать его IDENTITY.
18 фев 04, 12:06    [540902]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
кроме как instead trigger


Можно и в AFTER триггере.
18 фев 04, 12:17    [540926]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
Я Ламер
Guest
to tpg :
Сорри, может не разобрался, но причем здесь IDENTITY? Таблица

Name IsDefault
Name1 0
Name2 0
Name3 1
Name4 0

Мне нужно следить, чтобы была только одна единица, как здесь поможет IDENTITY?

to pkarklin :
Не совсем хорошо, так я не буду знать какую запись попытались добавить/изменить со значение, а какая была до этого.
18 фев 04, 12:25    [540939]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
McMurfy
Member

Откуда: Киев
Сообщений: 474
Заведи отдельную таблицу настроек, а в ней в каком-нить поле храни ссылку на Default-строку твоей таблицы.
18 фев 04, 12:27    [540942]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
я не буду знать какую запись попытались добавить/изменить со значение, а какая была до этого.


Это как это вы не будете знать??? А таблицa inserted вам на что? Или у вас таблица первичного ключа не имеет?
18 фев 04, 12:29    [540946]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
to tpg :
Сорри, может не разобрался, но причем здесь IDENTITY? Таблица

Name IsDefault
Name1 0
Name2 0
Name3 1
Name4 0

Мне нужно следить, чтобы была только одна единица, как здесь поможет IDENTITY?

Ну, дык, ить, вопросы то надо по-понятному задавать...
18 фев 04, 12:33    [540958]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
Я Ламер
Guest
to pkarklin :
Извините, не совсем правильно выразился. Мне не подходит after insert, так как доступ к этой таблицы осуществяется через графический интерфейс, и результати insert/update, мне нужно возвращать на клиент (успешно/не успешно), поэтому если бы при insert сервер бы сразу ругался было бы очень удобно, чем самому делать RaiseError.
18 фев 04, 12:35    [540963]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
bushmen
Member

Откуда: г. Москва
Сообщений: 828
автор
при insert сервер бы сразу ругался было бы очень удобно, чем самому делать RaiseError.

Может, Вы хотите, чтобы и клиентское приложение кто-нибудь за Вас написал - было бы очень удобно! :)
18 фев 04, 12:39    [540978]     Ответить | Цитировать Сообщить модератору
 Re: Rule or something else  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Для решения вашей задачи подойдет тока триггер, так как тока в нем можно обратиться к другим записям таблицы. Поэтому пишите AFTER TRIGGER и отправляейте клиенту ошибку. А вот сообщение об успехе формируйет чисто на клиенте при отсутсвии ошибки на сервере.
18 фев 04, 12:39    [540981]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить