FirebirdSQL logo

Unless explicitly mentioned otherwise in an “Available in” section, context variables are available in at least DSQL and PSQL.Availability in ESQL is — bar some exceptions — not tracked by this Language Reference.

CURRENT_CONNECTION

Unique identifier of the current connection.

Type

BIGINT

Syntax
CURRENT_CONNECTION

Its value is derived from a counter on the database header page, which is incremented for each new connection.When a database is restored, this counter is reset to zero.

Examples
select current_connection from rdb$database

execute procedure P_Login(current_connection)

INSERTING

Indicates if the trigger fired for an INSERT operation

Available in

PSQL — triggers only

Type

BOOLEAN

Syntax
INSERTING

Intended for use in multi-action triggers.

Example
if (inserting or updating) then
begin
  if (new.serial_num is null) then
    new.serial_num = gen_id(gen_serials, 1);
end

LOCALTIME

Current server time in the session time zone, without time zone information

Type

TIME WITHOUT TIME ZONE

Syntax
LOCALTIME [ (<precision>) ]

<precision> ::= 0 | 1 | 2 | 3

The optional precision argument is not supported in ESQL.

Table 1. LOCALTIME Parameter
Parameter Description

precision

Precision.The default value is 0.Not supported in ESQL

LOCALTIME returns the current server time in the session time zone.The default is 0 decimals, i.e. seconds precision.

Note
  • LOCALTIME was introduced in Firebird 3.0.4 and Firebird 2.5.9 as an alias of CURRENT_TIME.In Firebird 5.0, CURRENT_TIME returns a TIME WITH TIME ZONE instead of a TIME [WITHOUT TIME ZONE], while LOCALTIME returns TIME [WITHOUT TIME ZONE].It is recommended to use LOCALTIME when you do not need time zone information.

  • LOCALTIME has a default precision of 0 decimals, where LOCALTIMESTAMP has a default precision of 3 decimals.As a result, LOCALTIMESTAMP is not the exact sum of CURRENT_DATE and LOCALTIME, unless you explicitly specify a precision (i.e. LOCALTIME(3) or LOCALTIMESTAMP(0)).

  • Within a PSQL module (procedure, trigger or executable block), the value of LOCALTIME will remain constant every time it is read.If multiple modules call or trigger each other, the value will remain constant throughout the duration of the outermost module.If you need a progressing value in PSQL (e.g. to measure time intervals), use [fblangref50-contextvars-now].

Examples
select localtime from rdb$database
-- returns e.g. 14:20:19.0000

select localtime(2) from rdb$database
-- returns e.g. 14:20:23.1200