Вырва Валерий Евгеньевич пишет:
Хочеться реализовать систему сессий для пользователя, поэтому интерисует
какую информацию можно
получить сразу после коннекта пользователя FireBird (всегда одного и того же) к
базе.
Схема предполагается такая:
1) Выполняется соединение под пользователем Dummy
2) Выполняется процедура Log_In(Login, Password), которая на осное уникальной
информации о
подключении создает запись в таблице сессий.
3) Любая работа с данными получает ID пользователя на основе той же
уникальной информации и
используя этот ID выполняет работу.
4) При выходе вызывается Log_Out(), которая удаляет запись из таблице сессий
Пока есть идея привязываеться к параметру "Current_Connection", котрый должен
быть уникален для
каждого соединения со времени создания (рестора) базы (Дмитрий Еманов,
Alexander A. Venikov). Есть
возможность получить другие уникальные для текущего соединения значения
(например IP:Port клиента)?
А CURRENT_CONNECTION увеличивается после того как выдаст значение? или
сначала увеличится счетчик,
а потом вернется значение?
Привет!
Вот как сделано у меня:
Таблица коннектов(сессий)
CREATE TABLE CONNECTIONS (
ID INTEGER NOT NULL,
COMPUTER_ID INTEGER NOT NULL,
USER_ID INTEGER NOT NULL,
DATETIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
LOGOUT_DATETIME TIMESTAMP,
...
);
Триггер к ней:
CREATE TRIGGER CONNECTIONS_BI FOR CONNECTIONS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
DELETE FROM CONNECTIONS WHERE ID = CURRENT_CONNECTION;
NEW.ID = CURRENT_CONNECTION;
...
END
База спокойно переживает б/р, а в триггерах на оперативных таблицах я
вытаскиваю инфу о юзере и станции по CURRENT_CONNECTION.
--
Удачи!
Shiliaev Ruslan
ЗЫ: Приходится вести параллельный учет юзеров. Хочу хранение юзеров в
базе в FB3!