Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите чайнику !!!!  [new]
Чайник31
Member

Откуда:
Сообщений: 5
Есть база под SQL 2000. В ней есть таблица экспериментов, содержащая дату, автора и т п. Также есть связанная с ней таблица, которая содержит условия проведения экспериментов (Давление, температура и т п).
Как сделать, чтобы если один пользователь просматривал определенный эксперимент, другой не имел к нему доступа т. е. не мог удалить или отредактировать его.

Заранее благодарен.
23 июн 04, 15:04    [760670]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
Дать соответствующие права пользователям на таблицу.
23 июн 04, 15:24    [760755]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
Alexander Popov
Member

Откуда:
Сообщений: 663
Дать прова не получится так как они останутся после просмотра другого пользователя.
Но зачем это надо тоже непонятно.
23 июн 04, 15:26    [760765]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
Пардон, вопрос не так понял.
можно флаг завести специальный: установить его, если эксперимент занят, и сбросить если эксперимент закончен.
23 июн 04, 15:26    [760769]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
... а в триггере на изменение/удаление анализировать его.
23 июн 04, 15:28    [760773]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
Alexander Popov
Member

Откуда:
Сообщений: 663
В таком случае лучше в тригере анализировать процедурой sp_lock обрашается ли кто еще к нужному объекту
23 июн 04, 15:30    [760785]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
svadn
Member

Откуда:
Сообщений: 224
Такие вещи лучше делать на клиенте, прописывается флажок в поле, затем тригер на апдейт и инсерт сверяется с флажком достоин-недостоин. А вообще условие просматривал-не просматривал выглядит очень странно, обычно проверка на создателя делается.
23 июн 04, 15:33    [760803]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Поиск
23 июн 04, 15:36    [760812]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
Чайник31
Member

Откуда:
Сообщений: 5
To All
Устанавливать флаги, это конечно хорошо, но что произойдет, если в момент редактирования вырубится питание клиентского компа? Насколько я понимаю флаг так и останется и доступ будет закрыт до тех пор, пока руками его не вычистить.
Насколько правильно организовать это в следующем виде (Программлю на Билдере + ADO)

1. Средствами ADOConnection начать транзакцию

2. Выполнить запрос
SELECT * FROM ExperimentHeader (UPDLOCK READPAST)
WHERE
ExpID = :ID

3. Если возвращенное кол-во записей 0 то эксперимент занят или удален

4. Редактирование

5. Завершение транзакции ADOConnection

При таком раскладе при простом селекте данная запись будет видна и заблокирована от изменений, но меня смущает то, что редактирование может продолжаться довольно долго и транзакция будет открыта.
Насколько правильны мои рассуждения?
23 июн 04, 17:24    [761235]     Ответить | Цитировать Сообщить модератору
 Re: Помогите чайнику !!!!  [new]
Чайник31
Member

Откуда:
Сообщений: 5
Pkarklin СПАСИБО!!!!!!!
23 июн 04, 17:46    [761301]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить