Firebird - разные полезности


* Как узнать владельца базы?

SELECT DISTINCT RDB$OWNER_NAME AS DATABASE_OWNER
  FROM RDB$RELATIONS WHERE (RDB$SYSTEM_FLAG = 1);


* Как передавать и анализировать свои переменные между 
  процедурами и триггерами?

- Установка переменной в рамках транзакции
SELECT rdb$set_context('USER_TRANSACTION', 'MyVar1', 'Test1')  FROM rdb$database

- Установка переменной в рамках соединения
SELECT rdb$set_context('USER_SESSION', 'MyVar2', 'Test2')  FROM rdb$database

- Чтение 1 - Возвращает VARCHAR(255)
SELECT rdb$get_context('USER_TRANSACTION', 'MyVar1')  FROM rdb$database

- Чтение 2 - Возвращает VARCHAR(255)
SELECT rdb$get_context('USER_SESSION', 'MyVar2')  FROM rdb$database


* Как обозначить поля без идентификаторов

SELECT * FROM (
  SELECT 1, 2 FROM RDB$DATABASE
) (N1, N2)
WHERE EXISTS(
   SELECT * FROM T WHERE T.f=N1
)