powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Триггер на вставку id группы id пользователя в таблицу
25 сообщений из 36, страница 1 из 2
Триггер на вставку id группы id пользователя в таблицу
    #38644641
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер, господа!
Обращаюсь с такой просьбой, так как не нашел подходящих примеров. Мне нужны два триггера:
1-ый - который каждый раз при добавлении новой записи в таблицу(table1) вставлял бы в поле(id_group) идентификатор группы пользователей ms sql;
2-ой - который каждый раз при добавлении новой записи в таблицу(table1) вставлял бы в поле(id_user) идентификатор пользователя ms sql.
При этом, у таблицы (table1) имеются 2 подчиненные таблицы, в которые тоже, наверное, нужно вставлять те же самые данные. Даже не знаю, надо ли делать триггеры на апдейт или хватит только на инсерт? И надо ли в подчиненные таблицы добавлять эти данные(id_group или id_user), если я потом создам вью, в которой собираюсь разграничить доступ?
Сам триггеры никогда не писал и вот хочу поэкспериментировать. Заранее благодарен за помощь и содействие.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644647
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Обращаюсь с такой просьбой, так как не нашел подходящих примеров
А по-моему такой неудачный дизайн можно найти на каждом углу. На практике знать кто
вставил запись - недостаточно. Поэтому лучше сразу вести полный журнал кто, что и когда
делал с записью в отдельной таблице. Возможно даже перечислением изменённых полей и/или
новыми-старыми данными.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644651
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

А мне не отслеживать нужно, дружище, мне нужно разграничить права.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644655
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПоэтому лучше сразу вести полный журнал кто, что и когда
делал с записью в отдельной таблице

а разве это не делает сама СУБД?
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644661
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawа разве это не делает сама СУБД?
У неё лог не бесконечный и как раз в MS SQL в нём вроде бы даже не порыться в отличии от
Oracle.
А вот есть ли у MS SQL Row Level Security из коробки я и не помню. Впрочем, если уж аффтар
со своим вопросом полез в раздел проектирования БД...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644664
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovА вот есть ли у MS SQL Row Level Security из коробки я и не помню. Впрочем, если уж аффтар
со своим вопросом полез в раздел проектирования БД...

Есть! Делается посредством разграничения прав через вьюшки. Я и сам не знал, но вник и разобрался. Только вот триггеры написать не могу:(
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644666
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Только вот триггеры написать не могу:(
Тут тебе не повезло: у MS SQL нет before-триггеров.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644675
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovТут тебе не повезло: у MS SQL нет before-триггеров.

Так почему бы не использовать after insert?
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644680
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Так почему бы не использовать after insert?
В котором делать update только что вставленных записей? Да, это высокое извращение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644691
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovВ котором делать update только что вставленных записей? Да, это высокое извращение.

Ну, я не силен в триггерах, просто помню, что где-то в книге был триггер, который при создании или обновлении записи , вставлял в строку текущую дату! Это я точно помню! Таким же макаром хочу с id-шниками групп и пользователей сделать.
Меня сюда перенаправили с форума "Microsoft SQL Server" и именно там посоветовали пойти таким путем.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644890
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakoveric555Так почему бы не использовать after insert?
В котором делать update только что вставленных записей? Да, это высокое извращение.
Ой, да ладно! Обычная практика, если вставка делается не только через ХП.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644904
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Ну, я не силен в триггерах, просто помню, что где-то в книге был триггер, который при создании или обновлении записи , вставлял в строку текущую дату! Это я точно помню! Таким же макаром хочу с id-шниками групп и пользователей сделать. Ну так, чего именно не получается-то?
eric555Меня сюда перенаправили с форума "Microsoft SQL Server" и именно там посоветовали пойти таким путем. Подозреваю, сюда вас направили с этими вопросами (хоть бы ссылку на обсуждение привели):eric555При этом, у таблицы (table1) имеются 2 подчиненные таблицы, в которые тоже, наверное, нужно вставлять те же самые данные. Даже не знаю, надо ли делать триггеры на апдейт или хватит только на инсерт? И надо ли в подчиненные таблицы добавлять эти данные(id_group или id_user), если я потом создам вью, в которой собираюсь разграничить доступ?
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644973
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555,

Чтобы вставлять user_id в поле (в том числе в дочерних таблицах) в MSSQL, триггер не нужен - вполне достаточно прописать default-значение для поля.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644980
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С учетом возможной потери аксесом идентити (см. ссылку внутри кода)

sUserNameInsert, dtDateInsert - кто и когда вставил (первый)
sUserNameUpdate, dtDateUpdate - кто и когда последний сохранил

Код: sql
\r\nCREATE TRIGGER dbo.tru_<TableName> ON dbo.<TableName> FOR UPDATE AS \r\nSET NOCOUNT ON\r\n\r\n   -- Сохранение IDENTITY в начале триггера/процедуры\r\n   -- /topic/1298&hl=\r\n   declare @idRestore as int, @bRestore as bit, @sSQL as nvarchar(64)\r\n   set @idRestore = @@IDENTITY\r\n\r\n   UPDATE dbo.<TableName> \r\n   SET sUserNameUpdate = SUSER_SNAME(), dtDateUpdate = GETDATE()\r\n   WHERE <PK> IN (SELECT <PK> FROM inserted)\r\n\r\n   -- Восстановление @@IDENTITY в конце триггера/процедуры \r\n   set @sSQL = \'SELECT IDENTITY (INT, \' \r\n      + cast(@idRestore As Varchar(10)) + \', 1) AS ID INTO #Tmp\'\r\n   execute (@sSQL)\r\n\r\nRETURN\r\n\r\n\r\nCREATE TRIGGER dbo.tri_<TableName> ON dbo.<TableName> FOR INSERT AS \r\nSET NOCOUNT ON\r\n\r\n   -- Сохранение IDENTITY в начале триггера/процедуры\r\n   -- /topic/1298&hl=\r\n   declare @idRestore as int, @bRestore as bit, @sSQL as nvarchar(64)\r\n   set @idRestore = @@IDENTITY\r\n\r\n   UPDATE dbo.<TableName> \r\n   SET sUserNameInsert = SUSER_SNAME(), dtDateInsert = GETDATE()\r\n   WHERE <PK> IN (SELECT <PK> FROM inserted)\r\n\r\n   -- Восстановление @@IDENTITY в конце триггера/процедуры \r\n   set @sSQL = \'SELECT IDENTITY (INT, \' + cast(@idRestore As Varchar(10)) + \', 1) AS ID INTO #Tmp\'\r\n   execute (@sSQL)\r\n\r\nRETURN\r\n
\r\n


вместо пользователя надо вставлять группу. Либо потом во вью по пользователю получить группу. Во втором случае бонус - для любой записи информация о том, кто вставил, кто последний сохранил сразу можно выгогять на форму аксеса без доп. затрат. Даже имея не полную исторю аудита такие четыря поля по всех формах уже удобно контролировать работу в многопользовательской среде.

Во всех прикладных таблицах набор одинаковых полей для аудита вставляется специальной процедурой

Делать одинаковые триггры на все пользовтельские таблицы удобно автоматическим генератором.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38644990
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и тереть эту тему лучше в форумах по MS SQL серверу и аксесу.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38645700
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracs Подозреваю, сюда вас направили с этими вопросами (хоть бы ссылку на обсуждение привели):eric555При этом, у таблицы (table1) имеются 2 подчиненные таблицы, в которые тоже, наверное, нужно вставлять те же самые данные. Даже не знаю, надо ли делать триггеры на апдейт или хватит только на инсерт? И надо ли в подчиненные таблицы добавлять эти данные(id_group или id_user), если я потом создам вью, в которой собираюсь разграничить доступ?
Нет, в целом по моей проблеме
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38645703
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскинeric555,

Чтобы вставлять user_id в поле (в том числе в дочерних таблицах) в MSSQL, триггер не нужен - вполне достаточно прописать default-значение для поля.
Вот об этом я, блин, не подумал, черт побери!!! А что лучше, кстати? Триггером или дефаул-значением?
И как прописать функцию на дефаулт-ай ди группы/пользователя? Т.е. сами функции нужны.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38645710
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-ЛВо всех прикладных таблицах набор одинаковых полей для аудита вставляется специальной процедурой
Делать одинаковые триггры на все пользовтельские таблицы удобно автоматическим генератором.
Вот это не понял. Можно подробнее маленько.

И, кстати, выше тут написали про дефаулт-значения. Я о них не подумал что-то. Что посоветуете, Вашими триггерами или дефаулт-значениями вставлять данные id группы и id пользователя. В дальнейшем, я каждую таблицу подключу во вьюху и там пропишу в условие отбора, что текущий подключенный пользователь/группа=id пользователя/id группы. Одна вьюха будет обслуживать несколько отделов. Так каждый пользователь отдела будет видеть только свои внесенные строки.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646220
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Кот Матроскинeric555,

Чтобы вставлять user_id в поле (в том числе в дочерних таблицах) в MSSQL, триггер не нужен - вполне достаточно прописать default-значение для поля.
Вот об этом я, блин, не подумал, черт побери!!! А что лучше, кстати? Триггером или дефаул-значением?
И как прописать функцию на дефаулт-ай ди группы/пользователя? Т.е. сами функции нужны.
Default-ом лучше, конечно.
Функция для пользователя - User_ID(), Что Вы понимаете под группой пользователя - я, честно говоря, не понял.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646558
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинDefault-ом лучше, конечно.
MS SQL не позволяет вставить значения отличные от умолчательных? Или что будет если
пользователь напишет "insert (user_id) values ('Вася Пупкин')"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646577
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКот МатроскинDefault-ом лучше, конечно.
MS SQL не позволяет вставить значения отличные от умолчательных?

Позволяет, конечно

Dimitry SibiryakovИли что будет если
пользователь напишет "insert (user_id) values ('Вася Пупкин')"?..

Напишет где?
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646581
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинНапишет где?
В любой утилите, позволяющей ему подключиться к БД и выполнить запрос.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646587
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинDimitry Sibiryakovпропущено...

MS SQL не позволяет вставить значения отличные от умолчательных?

Позволяет, конечно

... хотя при очень большом желании можно сделать check constraint, чтобы таки не позволял. Но на мой взгляд, проблема несколько надумана.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646945
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинЧто Вы понимаете под группой пользователя - я, честно говоря, не понял.
Группа, в которую входят несколько пользователей MS SQL! А точнее ее ID, чтобы во вью ставить фильтр на доступ к строкам, созданных участниками группы.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646948
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovКот МатроскинDefault-ом лучше, конечно.
MS SQL не позволяет вставить значения отличные от умолчательных? Или что будет если
пользователь напишет "insert (user_id) values ('Вася Пупкин')"?..
Ничего не выйдет у пользователя, так как на прямую к таблице у него доступа не будет!!! А будет через вью, где этого поля (user_id) видно не будет.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Триггер на вставку id группы id пользователя в таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]