Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Trigger and current_user or computer IP/name (Firebird 3.0) / 10 сообщений из 10, страница 1 из 1
11.01.2019, 00:17
    #39758190
FredFF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SET TERM ^ ;
CREATE OR ALTER TRIGGER TR_PARTS_QOH_LOG FOR PARTS 
ACTIVE AFTER UPDATE POSITION 0
AS 
  DECLARE VARIABLE USER_IP CHAR(15);
BEGIN 
  
  IF (NEW.QTY_ON_HAND <> OLD.QTY_ON_HAND) THEN
  BEGIN
    USER_IP = rdb$get_context('SYSTEM', 'CLIENT_ADDRESS'); 
 /* enter trigger code here */ 
    INSERT INTO PARTS_QOH_LOG (LOG_ID,
                          PART_NO,
                          USER_ID,
                          USER_IP,
                          TIME_STAMP,
                          OLD_QOH,
                          NEW_QOH)
    VALUES (CURRENT_TRANSACTION,
          OLD.PART_NO,
          CURRENT_USER,
          :USER_IP,
          CURRENT_TIMESTAMP,
          OLD.QTY_ON_HAND,
          NEW.QTY_ON_HAND);
    END
END^
SET TERM ; ^


My problem: current_user is always SYSDBA, USER_IP is always null.
How to get PC name instead of IP address?
I have current user logged in Delphi application. How to update current_user value?
Thanks, Fred
...
Рейтинг: 0 / 0
11.01.2019, 01:34
    #39758197
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
Перестань подключаться в embedded режиме. Читай Release Notes.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.01.2019, 02:07
    #39758200
FredFF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
Dimitry Sibiryakov,

I do not use embedded mode - local database access.

Thanks, Fred
...
Рейтинг: 0 / 0
11.01.2019, 03:01
    #39758201
FredFF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
I've got host name of computer by using other query:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SET TERM ^ ;
ALTER TRIGGER TR_PARTS_QOH_LOG ACTIVE
AFTER UPDATE POSITION 0
AS 
  DECLARE VARIABLE USER_HOST CHAR(15);
BEGIN 
  IF (NEW.QTY_ON_HAND <> OLD.QTY_ON_HAND) THEN
  BEGIN
 	SELECT ma.MON$REMOTE_HOST
    FROM MON$ATTACHMENTS ma
    join MON$TRANSACTIONS mt 
    on ma.MON$ATTACHMENT_ID = mt.MON$ATTACHMENT_ID
    where mt.MON$TRANSACTION_ID = CURRENT_TRANSACTION
      INTO :USER_HOST;
	/* enter trigger code here */ 
    INSERT INTO PARTS_QOH_LOG (LOG_ID,
                          PART_NO,
                          USER_ID,
                          USER_HOST,
                          TIME_STAMP,
                          OLD_QOH,
                          NEW_QOH)
    VALUES (CURRENT_TRANSACTION,
          OLD.PART_NO,
          CURRENT_USER,
          :USER_HOST,
          CURRENT_TIMESTAMP,
          OLD.QTY_ON_HAND,
          NEW.QTY_ON_HAND);
    END
END^
SET TERM ; ^



How can I get user name? We are using our own login system so only apps knows who was login.
...
Рейтинг: 0 / 0
11.01.2019, 09:20
    #39758254
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
1. Use SRC tag (button) for SQL queries and scripts.
2. Show your connection params/connection string.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.01.2019, 10:13
    #39758289
a7exander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
On user login you can save his US_NAME:
Код: plsql
1.
rdb$set_context('USER_SESSION', 'US_NAME',:us_name);



Then you can use:
Код: plsql
1.
rdb$get_context('USER_SESSION', 'US_NAME');
...
Рейтинг: 0 / 0
11.01.2019, 10:55
    #39758323
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
FredFF,

it is a VERY bad idea to select mon$ within triggers. You may get exponential performance decrease by the number of users.
...
Рейтинг: 0 / 0
11.01.2019, 13:48
    #39758437
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
FredFFI do not use embedded mode - local database access.

Read Release Notes at last. In Firebird 3.0 it IS embedded mode.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.01.2019, 14:35
    #39758461
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
FredFFlocal database access.
in addition to DS answer need to add, that "local access" is not equal to tcp localhost access.
When you do not specify server at the connection string, like
server:c:\db\data.fdb
or
localhost:c:\db\data.gdb

this is NOT a tcp connection, So, it is strange to expect IP in mon$attachments (or anywhere) while there is no IP.

And, if you use your own login system (all users are logged as SYSDBA or other USER), just pass user name from the client application, that's it.
...
Рейтинг: 0 / 0
15.01.2019, 14:17
    #39759768
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger and current_user or computer IP/name (Firebird 3.0)
select from mon$***** tables in trigger is bad idea.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Trigger and current_user or computer IP/name (Firebird 3.0) / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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