powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Trigger and current_user or computer IP/name (Firebird 3.0)
10 сообщений из 10, страница 1 из 1
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758190
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758197
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перестань подключаться в embedded режиме. Читай Release Notes.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758200
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

I do not use embedded mode - local database access.

Thanks, Fred
...
Рейтинг: 0 / 0
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758201
FredFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758254
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758289
a7exander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758323
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758437
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39758461
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Trigger and current_user or computer IP/name (Firebird 3.0)
    #39759768
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select from mon$***** tables in trigger is bad idea.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Trigger and current_user or computer IP/name (Firebird 3.0)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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