Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
В базе на MS SQL 2000 в таблицу был мной добавлен столбец User с Defaults функцией suser_sname() которая возвращает имя пользователя создавшего запись в таблице. Всем пользователям прикрыл доступ на этот столбец на Update. Но, эта функция возвращает только имя пользователя СОЗДАВШЕГО новую запись в таблице. Если какой-то другой пользователь изменит эту запись, то в столбце User все равно остается имя пользователя создавшего запись, а не последнего, кто ее изменил. Не подскажите мне как и что правильно сделать в базе, чтобы в столбце User хранились учетные записи пользователей которые последними изменяли запись, и что-бы пользователи имели права только на Select по этому столбцу. Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2001, 07:14 |
|
||
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Если по-быстрому, то с помощью update-а в update триггере. А если по-хорошему, то лучше завести таблицу аудита, куда и складывать всю информацию о том кто и когда и что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2001, 07:28 |
|
||
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Вот делаю триггер: CREATE TRIGGER Dogovora_trigger1 ON [dbo].[Dogovora] FOR UPDATE AS begin UPDATE [dbo].[Dogovora] SET user_sec=suser_sname() WHERE id_dog=.... <===(какое выражение дожно тут быть чтобы был end UPDATE только той записи в которой я или другой юзер произвел изменение??) id_dog - ключевое поле таблицы Dogovora Т.е. какая есть функция типа current_id_row(table) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2001, 11:05 |
|
||
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
where id_dog = inserted.id_dog ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2001, 11:08 |
|
||
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Вернее, так: UPDATE Dogovora SET user_sec = suser_sname() from Dogovora, inserted WHERE Dogovora.id_dog = inserted.id_dog ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2001, 11:10 |
|
||
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
2 Mitrish_v: Как показал GreenSunrise и будет по-быстрому. А если по хорошему, то поле-то одно, и Вы там сможете видеть имя только последнего пользователя. А информация о всех предыдущих изменениях, в том числе о вставке, будет утеряна. "Кто последний тот и папа?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2001, 11:18 |
|
||
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Спасибо всем ответившим! Хороший форум, чесн слово! Ну а насчет папы... Тут Вы правы. Может это и не совсем правильно будет, но наверно логично будет создать 2 столбца - один скажем row_creator а другой row_updating. в моем случае этого будет достаточно, т.к. занесением информации будет заниматься ограниченный круг людей (я да я ) ну мож еще 1 человек. А не подскажете ли мне, где и какая есть литература или информация (на русском) по MS SQL 2000 для новичка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2001, 06:52 |
|
||
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
>но наверно логично будет создать 2 столбца - один скажем row_creator а другой row_updating Абсолютно нелогично и неправильно. Хочешь знать только последнего пользователя - оставь один столбец, хочешь знать всю предысторию - сделай нормальный аудит, полноценный. Ну потом же сам будешь кричать: блин, как много нужно переделывать!!! Или после тебя народ будет материться: какой #$% это написал?! Ограничить предысторию (если потом захочется) можно и по количеству архивных данных (допустим, хранить N последних записей об изменениях), и по времени (месяц, год). Это уже неважно - главное, сделать хорошую основу себе и всем остальным. >занесением информации будет заниматься ограниченный круг людей (я да я ) ну мож еще 1 человек Ага. Заводим столбец для себя, и еще один для вот этого "1 человека". А потом совсем случайно появляется еще один, заведем и для него... Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2001, 07:03 |
|
||
|
Большой вопрос по функции suser_sname() в MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
>>занесением информации будет заниматься ограниченный круг людей (я да я ) ну мож еще 1 >человек >Ага. Заводим столбец для себя, и еще один для вот этого "1 человека". А потом совсем >случайно появляется еще один, заведем и для него... Так? И не совсем так..... Первый столбец "row_creator" будет содержать имя юзера создавшего запись, а второй столбец "row_updating" - имя внесшего последнюю модификацию в запись. А шо такое аудит я еще смутно себе представляю, особенно как его настраивать (че ж я и просил инфу по MS SQL 2000). Да и однозначное определению автора и и последнего изменившего запись вполне меня устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2001, 12:57 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32019821&tid=1824469]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
59ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 357ms |

| 0 / 0 |
