powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Триггер на вставку id группы id пользователя в таблицу
36 сообщений из 36, показаны все 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
Триггер на вставку id группы id пользователя в таблицу
    #38646957
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Ничего не выйдет у пользователя, так как на прямую к таблице у него доступа
не будет!!! А будет через вью, где этого поля (user_id) видно не будет.
А, ну тогда тебе в любом случае придётся писать на этот view instead of триггера, а с ними
задача становится тривиальной до банальности.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646973
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovА, ну тогда тебе в любом случае придётся писать на этот view instead of триггера, а с ними задача становится тривиальной до банальности.
А это (view instead of ) зачем? Можете подробнее? Зачем вообще это нужно? Я просто в первый раз решил озадачить себя всем этим... и вот, тренируюсь...
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646980
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Я просто в первый раз решил озадачить себя всем этим... и вот, тренируюсь...

Ну так потренируйся заодно и в чтении BOL. Сильно пригодится в жизни.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38646984
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

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

А разве просто подключить вьюшку к таблице не получится?.

Вьюшку можно просто подключить к таблице - для просмотра. Но как будет происходить вставка в таблицу, если к ней у пользователя нет доступа? Для того чтобы вставлять во View - нужен триггер instead of.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38647706
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Спасибо, вот теперь понятно предназначение этого триггера! Я попрошу, а можете примерчик подкинуть? Вам нужны какие-то данные от меня? Просто мне очень нужен простой пример:)
Кстати, во вью данные вставляются, если вью подключено через ODBC в accdb файл, если через adp, то тогда не дает вставлять данные и пишет, что нет прав на инсерт в таблицу:)
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38647781
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Я попрошу, а можете примерчик подкинуть? Вам нужны какие-то данные от меня? Просто мне очень нужен простой пример:)

Внезапно, первая же ссылка в гугле
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38647919
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Да, я видел эту статью, просто не разобрался в этих триггерах, сложно, так как никогда их не писал...:( ладно.. А скажите пожалуйста, делать мне придется только триггер на инсерт? На апдейт и на дэлит разве не нужно?
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38648990
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eric555Кот Матроскин,

Да, я видел эту статью, просто не разобрался в этих триггерах, сложно, так как никогда их не писал...:( ладно.. А скажите пожалуйста, делать мне придется только триггер на инсерт? На апдейт и на дэлит разве не нужно?
Если предполагается обновление данных и удаление из таблицы (может не предполагаться) - то да, нужно, конечно. Просто вставка-то в таблицу понадобится в любом случае :) а удаление и обновление - уже it depends.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38649085
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Еще раз спасибо! Если чего, спрошу вашего совета.
...
Рейтинг: 0 / 0
Триггер на вставку id группы id пользователя в таблицу
    #38720764
eric555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Дружище, подскажи пожалуйста, почему через .adp файл не получается вставлять данные во вью?
Триггер "instead of insert" для вью написал. adp-шник ругается, говорит, что нет разрешения для вставки в основную таблицу. Права на вью все есть. На основную таблицу все права отобрал. Триггер написан правильно.
Если через обычный access-вский файлик (через ODBC) подключить вью и через нее вносить данные, то все нормально.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Триггер на вставку id группы id пользователя в таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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