|
|
|
grant connect
|
|||
|---|---|---|---|
|
#18+
АСА 9.0.1 есть таблица с пользователями, хочу написать тригер, чтоб при добавлении записей в таблицу автоматом создавался пользователь в базе пишу ALTER TRIGGER "UAdd" AFTER INSERT ORDER 1 ON "DBA"."Users" REFERENCING NEW AS new_name FOR EACH ROW /* WHEN( search_condition ) */ BEGIN grant connect to new_name.ulogin identified by new_name.upassword; grant membership in group aaa to new_name.ulogin; END но говорит ошибка около . в 6 строке подскажите что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 15:16 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
Попробуй так, получится или нет - я не уверен ALTER TRIGGER "UAdd" AFTER INSERT ORDER 1 ON "DBA"."Users" REFERENCING NEW AS new_name FOR EACH ROW BEGIN declare @execstring char(200); declare @uname char(200); declare @upwd char(200); set @uname=new_name.ulogin; set @upwd=new_name.upassword; set @execstring='grant connect to '||@uname+' identified by '+@upwd; execute immediate @execstring END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 15:37 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
не работает! ошибка в этой строке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 16:27 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
Может, из триггера нельзя? Я попробовал, создал процедуру Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Все работает, Pupkin загрантился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 16:38 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
GRANT имеет эффект "Automatic commit" (см. BOL). Внутри триггеров нельзя вызывать COMMIT, а значит использовать операторы с таким эффектом. Как вариант могу предложить написать EVENT, в котором производить необходимые действия и возбуждать его из триггера. По идее EVENT идет в отдельной сессии и будет выполнен не в проводимой транзакции. Но хотелось бы заметить, что такая логика была бы по любому не правильной, так как в случае отката транзакции EVENT все равно бы отработал. Так что лучше всю логику перенести в процедуру и проводить нужные операции записи в таблицу и назначения прав через нее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 16:59 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
commit/rollback not allowed within atomic operation как побороть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 16:59 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
Внутри атомарных блоков по определению не должно быть COMMIT и ROLLBACK. Так что в данном случае ответ "Никак" или правильней "Перепроектируйте решение на правильный подход". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 17:17 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
Уважаемый ASCRUS, подскажите пожалуйста как правильней сделать: есть таблица пользователей! я хочу чтоб при добавлению в таблицу автоматически создавался пользователь в базе, при удалении - удалялся. или это неправильный вообще подход? расскажите пож. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 17:20 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
Сделай на клиенте при добавлении пользователя. В чем проблема-то? Ну, НЕЛЬЗЯ если из триггера сделать, технически невозможно. Зачем флейм разводить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 17:26 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
авторУважаемый ASCRUS, подскажите пожалуйста как правильней сделать: есть таблица пользователей! я хочу чтоб при добавлению в таблицу автоматически создавался пользователь в базе, при удалении - удалялся. или это неправильный вообще подход? расскажите пож. Ничего сложного - пишите хранимые процедуры на добавление и удаление пользователей. В кач-ве параметров им передаются все нужные аттрибуты пользователей. В этой процедуре добавляете/удаляете пользователя в нужную таблицу, потом делаете GRANT/REVOKE. Процедуры просто вызываете из клиентского приложения, передавая нужные им параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 18:07 |
|
||
|
grant connect
|
|||
|---|---|---|---|
|
#18+
Ничего сложного - пишите хранимые процедуры на добавление и удаление пользователей. В кач-ве параметров им передаются все нужные аттрибуты пользователей. В этой процедуре добавляете/удаляете пользователя в нужную таблицу, потом делаете GRANT/REVOKE. Процедуры просто вызываете из клиентского приложения, передавая нужные им параметры. Согласен с помощю процедур да, а с помощю тригера невозможно - тригера немогут упровлять системными таблицами! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2004, 17:54 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32633924&tid=2014285]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
181ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 294ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...