A database-wide unique number. In Firebird, you will have to manage
uniqueness through generators.

6.5

tinyint

SMALLINT

Integer data from 0 through 255. Firebird does not have such a small data
type.

6.5

varbinary

CHAR

Variable-length binary data with a maximum length of 8,000
bytes.

6.5

varchar

VARCHAR

Variable-length non-Unicode data with a maximum of 8,000 characters.
Firebird can hold up to 32,765 characters. In 6.5, maximum was 255.

7

uniqueidentifier

CHAR(38)

A globally unique identifier (GUID). In Firebird, you will have to
generate the values with User-Defined Functions (UDFs).

A subtle difference in the way NUMERIC and DECIMAL behave in
Firebird to bear in mind is that the NUMERIC definition means
exactly the precision requested (total number of digits), while
DECIMAL mean at least the request precision (the digits to the
right of the decimal symbol, however, are maintained exactly). In MS SQL, on the other hand,
numeric and decimal are synonims.

There is also a very common quasi-data type, identity, which can only be used when
defining tables. This is an int which is automatically assigned a value on
insertion and cannot be changed.

Converting the bit data type

The bit data type is used to hold a single boolean value, 0 or 1. MS SQL
does not support assigning NULL to this fields. InterBase can emulate this with an
INTEGER or a CHAR(1) data type.

The acceptable values can be restricted using domains. For more information on Firebird
domains, see the Data Definition documentation.

Converting the identity data type

There are many ways to perform the conversion. In general, Firebird is more flexible and
powerful in this respect.

The most direct conversion is to create a BEFORE trigger on the table, assigning to the
previous column the value from a generator. This ensures that the number is unique.

For added flexibility, a single generator can be used for many tables. In this case, the
type would work in a similar way as a timestamp would - by creating a database-wide unique
identifier.

Another common technique is to create a stored procedure to allow access to the
generator, and allow clients to pre-fetch the number. This is particularly useful for tools
such as Delphi which import the NOT NULL constraint on primary keys and refuse to post records
with NULL values.

CREATE TABLE my_table (
my_number integer not null primary key
)

CREATE GENERATOR my_generator

CREATE TRIGGER my_before_trigger FOR my_table
BEFORE INSERT
AS
BEGIN
IF (NEW.my_number IS NULL)
THEN NEW.my_number = GEN_ID(my_generator, 1);
END