powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / grant connect
11 сообщений из 11, страница 1 из 1
grant connect
    #32633548
АСА 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 строке

подскажите что не так?
...
Рейтинг: 0 / 0
grant connect
    #32633626
mustlive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так, получится или нет - я не уверен

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
...
Рейтинг: 0 / 0
grant connect
    #32633774
не работает!

ошибка в этой строке
...
Рейтинг: 0 / 0
grant connect
    #32633793
mustlive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, из триггера нельзя?
Я попробовал, создал процедуру

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create procedure "dba".trtr()
begin
  declare @execstring char( 200 );
  declare @uname char( 200 );
  declare @upwd char( 200 );
  set @uname='pupkin';
  set @upwd='vasya';
  set @execstring='grant connect to '||@uname+' identified by '+@upwd;
  execute immediate @execstring
end

Все работает, Pupkin загрантился
...
Рейтинг: 0 / 0
grant connect
    #32633847
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GRANT имеет эффект "Automatic commit" (см. BOL). Внутри триггеров нельзя вызывать COMMIT, а значит использовать операторы с таким эффектом. Как вариант могу предложить написать EVENT, в котором производить необходимые действия и возбуждать его из триггера. По идее EVENT идет в отдельной сессии и будет выполнен не в проводимой транзакции. Но хотелось бы заметить, что такая логика была бы по любому не правильной, так как в случае отката транзакции EVENT все равно бы отработал. Так что лучше всю логику перенести в процедуру и проводить нужные операции записи в таблицу и назначения прав через нее.
...
Рейтинг: 0 / 0
grant connect
    #32633848
commit/rollback not allowed within atomic operation



как побороть?
...
Рейтинг: 0 / 0
grant connect
    #32633899
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внутри атомарных блоков по определению не должно быть COMMIT и ROLLBACK. Так что в данном случае ответ "Никак" или правильней "Перепроектируйте решение на правильный подход".
...
Рейтинг: 0 / 0
grant connect
    #32633908
Уважаемый ASCRUS, подскажите пожалуйста как правильней сделать:


есть таблица пользователей!

я хочу чтоб при добавлению в таблицу автоматически создавался пользователь в базе, при удалении - удалялся.

или это неправильный вообще подход?

расскажите пож.
...
Рейтинг: 0 / 0
grant connect
    #32633924
mustlive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай на клиенте при добавлении пользователя. В чем проблема-то?

Ну, НЕЛЬЗЯ если из триггера сделать, технически невозможно. Зачем флейм разводить?
...
Рейтинг: 0 / 0
grant connect
    #32633989
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУважаемый ASCRUS, подскажите пожалуйста как правильней сделать:


есть таблица пользователей!

я хочу чтоб при добавлению в таблицу автоматически создавался пользователь в базе, при удалении - удалялся.

или это неправильный вообще подход?

расскажите пож.
Ничего сложного - пишите хранимые процедуры на добавление и удаление пользователей. В кач-ве параметров им передаются все нужные аттрибуты пользователей. В этой процедуре добавляете/удаляете пользователя в нужную таблицу, потом делаете GRANT/REVOKE. Процедуры просто вызываете из клиентского приложения, передавая нужные им параметры.
...
Рейтинг: 0 / 0
grant connect
    #32649325
Xcomfiles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего сложного - пишите хранимые процедуры на добавление и удаление пользователей. В кач-ве параметров им передаются все нужные аттрибуты пользователей. В этой процедуре добавляете/удаляете пользователя в нужную таблицу, потом делаете GRANT/REVOKE. Процедуры просто вызываете из клиентского приложения, передавая нужные им параметры. Согласен с помощю процедур да, а с помощю тригера невозможно - тригера немогут упровлять системными таблицами!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / grant connect
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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