Not all of the reserved keywords are reserved in Firebird and not all are used (yet). However, anything new in Firebird will always use the standard name if it is available. Thus, it is an excellent precaution to avoid defining identifiers that have the potential to become reserved in Firebird's SQL. |
|
The Cost of Blind Ignorance
If you decide to use potentially reserved words as identifiers for database objects, regardless of the consequences, you build a future cost into your databases: if a newer on-disk structure (ODS) version implements that word as a reserved keyword, both your databases and your applications will have to be modified in order to make your databases usable under the new server version. You will have two ways to do this, both pervasive:
- Redefine the identifier by surrounding it with double-quotes. It then becomes case-sensitive. All references everywhere must refer to the identifier using the quoted name OR
- Redefine the identifier by renaming it to a word that has no potential to become reserved (as should have been done originally, anyway!) So — for example — rename STATE to something like STATE0 or CNT_STATE.
Either way, you will have a lot of search-and-replace ahead of you. All dependencies on the object will have to be removed before you can perform either change. Compiled code that depends on this object (stored procedures, triggers, relational and CHECK constraints, etc.) will have to be modified in order to refer to the new object identifier. Likewise, all references to the object in application code will have to be corrected to the new situation.
This document is not about the idiosyncrasies that exist in the various keyword sets of Firebird's several versions. Always consult the Reserved Words section of the relevant release notes and/or Language Reference Update, alongside this one, to determine your complete "avoid list".
Also consider that, as long as a word was ever reserved by the standard, it has the potential to be, or to become, a reserved word in any SQL language implementation, not excluding Firebird's.
ABSOLUTE |
ABSOLUTE |
|
ACTION |
ACTION |
|
ADD |
ADD |
ADD |
|
AFTER |
|
ALL |
ALL |
ALL |
ALLOCATE |
ALLOCATE |
ALLOCATE |
ALTER |
ALTER |
ALTER |
AND |
AND |
AND |
ANY |
ANY |
ANY |
ARE |
ARE |
ARE |
|
ARRAY |
ARRAY |
AS |
AS |
AS |
ASC |
ASC |
|
|
ASENSITIVE |
ASENSITIVE |
ASSERTION |
ASSERTION |
|
|
ASYMMETRIC |
ASYMMETRIC |
AT |
AT |
AT |
|
ATOMIC |
ATOMIC |
AUTHORIZATION |
AUTHORIZATION |
AUTHORIZATION |
AVG |
|
|
|
BEFORE |
|
BEGIN |
BEGIN |
BEGIN |
BETWEEN |
BETWEEN |
BETWEEN |
|
|
BIGINT |
|
BINARY |
BINARY |
BIT |
BIT |
|
BIT_LENGTH |
|
|
|
BLOB |
BLOB |
|
BOOLEAN |
BOOLEAN |
BOTH |
BOTH |
BOTH |
|
BREADTH |
|
BY |
BY |
BY |
CALL |
CALL |
CALL |
|
|
CALLED |
CASCADE |
CASCADE |
|
CASCADED |
CASCADED |
CASCADED |
CASE |
CASE |
CASE |
CAST |
CAST |
CAST |
CATALOG |
CATALOG |
|
CHAR |
CHAR |
CHAR |
CHAR_LENGTH |
|
|
CHARACTER |
CHARACTER |
CHARACTER |
CHARACTER_LENGTH |
|
|
CHECK |
CHECK |
CHECK |
|
CLOB |
CLOB |
CLOSE |
CLOSE |
CLOSE |
COALESCE |
|
|
COLLATE |
COLLATE |
COLLATE |
COLLATION |
COLLATION |
|
COLUMN |
COLUMN |
COLUMN |
COMMIT |
COMMIT |
COMMIT |
CONDITION |
CONDITION |
CONDITION |
CONNECT |
CONNECT |
CONNECT |
CONNECTION |
CONNECTION |
|
CONSTRAINT |
CONSTRAINT |
CONSTRAINT |
CONSTRAINTS |
CONSTRAINTS |
|
|
CONSTRUCTOR |
|
CONTAINS |
|
|
CONTINUE |
CONTINUE |
CONTINUE |
CONVERT |
|
|
CORRESPONDING |
CORRESPONDING |
CORRESPONDING |
COUNT |
|
|
CREATE |
CREATE |
CREATE |
CROSS |
CROSS |
CROSS |
|
CUBE |
CUBE |
CURRENT |
CURRENT |
CURRENT |
CURRENT_DATE |
CURRENT_DATE |
CURRENT_DATE |
|
CURRENT_DEFAULT_TRANSFORM_GROUP |
CURRENT_DEFAULT_TRANSFORM_GROUP |
CURRENT_PATH |
CURRENT_PATH |
CURRENT_PATH |
|
CURRENT_ROLE |
CURRENT_ROLE |
CURRENT_TIME |
CURRENT_TIME |
CURRENT_TIME |
CURRENT_TIMESTAMP |
CURRENT_TIMESTAMP |
CURRENT_TIMESTAMP |
|
CURRENT_TRANSFORM_GROUP_FOR_TYPE |
CURRENT_TRANSFORM_GROUP_FOR_TYPE |
CURRENT_USER |
CURRENT_USER |
CURRENT_USER |
CURSOR |
CURSOR |
CURSOR |
|
CYCLE |
CYCLE |
|
DATA |
|
DATE |
DATE |
DATE |
DAY |
DAY |
DAY |
DEALLOCATE |
DEALLOCATE |
DEALLOCATE |
DEC |
DEC |
DEC |
DECIMAL |
DECIMAL |
DECIMAL |
DECLARE |
DECLARE |
DECLARE |
DEFAULT |
DEFAULT |
DEFAULT |
DEFERRABLE |
DEFERRABLE |
|
DEFERRED |
DEFERRED |
|
DELETE |
DELETE |
DELETE |
|
DEPTH |
|
|
DEREF |
DEREF |
DESC |
DESC |
|
DESCRIBE |
DESCRIBE |
DESCRIBE |
DESCRIPTOR |
DESCRIPTOR |
|
DETERMINISTIC |
DETERMINISTIC |
DETERMINISTIC |
DIAGNOSTICS |
DIAGNOSTICS |
|
DISCONNECT |
DISCONNECT |
DISCONNECT |
DISTINCT |
DISTINCT |
DISTINCT |
DO |
DO |
DO |
DOMAIN |
DOMAIN |
|
DOUBLE |
DOUBLE |
DOUBLE |
DROP |
DROP |
DROP |
|
DYNAMIC |
DYNAMIC |
|
EACH |
EACH |
|
|
ELEMENT |
ELSE |
ELSE |
ELSE |
ELSEIF |
ELSEIF |
ELSEIF |
END |
END |
END |
|
EQUALS |
|
ESCAPE |
ESCAPE |
ESCAPE |
EXCEPT |
EXCEPT |
EXCEPT |
EXCEPTION |
EXCEPTION |
|
EXEC |
EXEC |
EXEC |
EXECUTE |
EXECUTE |
EXECUTE |
EXISTS |
EXISTS |
EXISTS |
EXIT |
EXIT |
EXIT |
EXTERNAL |
EXTERNAL |
EXTERNAL |
EXTRACT |
|
|
FALSE |
FALSE |
FALSE |
FETCH |
FETCH |
FETCH |
|
FILTER |
FILTER |
FIRST |
FIRST |
|
FLOAT |
FLOAT |
FLOAT |
FOR |
FOR |
FOR |
FOREIGN |
FOREIGN |
FOREIGN |
FOUND |
FOUND |
|
|
FREE |
FREE |
FROM |
FROM |
FROM |
FULL |
FULL |
FULL |
FUNCTION |
FUNCTION |
FUNCTION |
|
GENERAL |
|
GET |
GET |
GET |
GLOBAL |
GLOBAL |
GLOBAL |
GO |
GO |
|
GOTO |
GOTO |
|
GRANT |
GRANT |
GRANT |
GROUP |
GROUP |
GROUP |
|
GROUPING |
GROUPING |
HANDLER |
HANDLER |
HANDLER |
HAVING |
HAVING |
HAVING |
|
HOLD |
HOLD |
HOUR |
HOUR |
HOUR |
IDENTITY |
IDENTITY |
IDENTITY |
IF |
IF |
IF |
IMMEDIATE |
IMMEDIATE |
IMMEDIATE |
IN |
IN |
IN |
INDICATOR |
INDICATOR |
INDICATOR |
INITIALLY |
INITIALLY |
|
INNER |
INNER |
INNER |
INOUT |
INOUT |
INOUT |
INPUT |
INPUT |
INPUT |
INSENSITIVE |
INSENSITIVE |
INSENSITIVE |
INSERT |
INSERT |
INSERT |
INT |
INT |
INT |
INTEGER |
INTEGER |
INTEGER |
INTERSECT |
INTERSECT |
INTERSECT |
INTERVAL |
INTERVAL |
INTERVAL |
INTO |
INTO |
INTO |
IS |
IS |
IS |
ISOLATION |
ISOLATION |
|
|
ITERATE |
ITERATE |
JOIN |
JOIN |
JOIN |
KEY |
KEY |
|
LANGUAGE |
LANGUAGE |
LANGUAGE |
|
LARGE |
LARGE |
LAST |
LAST |
|
|
LATERAL |
LATERAL |
LEADING |
LEADING |
LEADING |
LEAVE |
LEAVE |
LEAVE |
LEFT |
LEFT |
LEFT |
LEVEL |
LEVEL |
|
LIKE |
LIKE |
LIKE |
LOCAL |
LOCAL |
LOCAL |
|
LOCALTIME |
LOCALTIME |
|
LOCALTIMESTAMP |
LOCALTIMESTAMP |
|
LOCATOR |
|
LOOP |
LOOP |
LOOP |
LOWER |
|
|
|
MAP |
|
MATCH |
MATCH |
MATCH |
MAX |
|
|
|
|
MEMBER |
|
|
MERGE |
|
METHOD |
METHOD |
MIN |
|
|
MINUTE |
MINUTE |
MINUTE |
|
MODIFIES |
MODIFIES |
MODULE |
MODULE |
MODULE |
MONTH |
MONTH |
MONTH |
|
|
MULTISET |
NAMES |
NAMES |
|
NATIONAL |
NATIONAL |
NATIONAL |
NATURAL |
NATURAL |
NATURAL |
NCHAR |
NCHAR |
NCHAR |
|
NCLOB |
NCLOB |
|
NEW |
NEW |
NEXT |
NEXT |
|
NO |
NO |
NO |
|
NONE |
NONE |
NOT |
NOT |
NOT |
NULL |
NULL |
NULL |
NULLIF |
|
|
NUMERIC |
NUMERIC |
NUMERIC |
|
OBJECT |
|
OCTET_LENGTH |
|
|
OF |
OF |
OF |
|
OLD |
OLD |
ON |
ON |
ON |
ONLY |
ONLY |
ONLY |
OPEN |
OPEN |
OPEN |
OPTION |
OPTION |
|
OR |
OR |
OR |
ORDER |
ORDER |
ORDER |
|
ORDINALITY |
|
OUT |
OUT |
OUT |
OUTER |
OUTER |
OUTER |
OUTPUT |
OUTPUT |
OUTPUT |
|
OVER |
OVER |
OVERLAPS |
OVERLAPS |
OVERLAPS |
PAD |
PAD |
|
PARAMETER |
PARAMETER |
PARAMETER |
PARTIAL |
PARTIAL |
|
|
PARTITION |
PARTITION |
PATH |
PATH |
|
POSITION |
|
|
PRECISION |
PRECISION |
PRECISION |
PREPARE |
PREPARE |
PREPARE |
PRESERVE |
PRESERVE |
|
PRIMARY |
PRIMARY |
|
PRIOR |
PRIOR |
|
PRIVILEGES |
PRIVILEGES |
|
PROCEDURE |
PROCEDURE |
PROCEDURE |
PUBLIC |
PUBLIC |
|
|
RANGE |
RANGE |
READ |
READ |
|
|
READS |
READS |
REAL |
REAL |
REAL |
|
RECURSIVE |
RECURSIVE |
|
REF |
REF |
REFERENCES |
REFERENCES |
REFERENCES |
|
REFERENCING |
REFERENCING |
RELATIVE |
RELATIVE |
|
|
RELEASE |
RELEASE |
REPEAT |
REPEAT |
REPEAT |
RESIGNAL |
RESIGNAL |
RESIGNAL |
RESTRICT |
RESTRICT |
|
|
RESULT |
RESULT |
RETURN |
RETURN |
RETURN |
RETURNS |
RETURNS |
RETURNS |
REVOKE |
REVOKE |
REVOKE |
RIGHT |
RIGHT |
RIGHT |
|
ROLE |
|
ROLLBACK |
ROLLBACK |
ROLLBACK |
|
ROLLUP |
ROLLUP |
ROUTINE |
ROUTINE |
|
|
ROW |
ROW |
ROWS |
ROWS |
ROWS |
|
SAVEPOINT |
SAVEPOINT |
SCHEMA |
SCHEMA |
|
|
SCOPE |
SCOPE |
SCROLL |
SCROLL |
SCROLL |
|
SEARCH |
SEARCH |
SECOND |
SECOND |
SECOND |
SECTION |
SECTION |
|
SELECT |
SELECT |
SELECT |
|
SENSITIVE |
SENSITIVE |
SESSION |
SESSION |
|
SESSION_USER |
SESSION_USER |
SESSION_USER |
SET |
SET |
SET |
|
SETS |
|
SIGNAL |
SIGNAL |
SIGNAL |
|
SIMILAR |
SIMILAR |
SIZE |
SIZE |
|
SMALLINT |
SMALLINT |
SMALLINT |
SOME |
SOME |
SOME |
SPACE |
SPACE |
|
SPECIFIC |
SPECIFIC |
SPECIFIC |
|
SPECIFICTYPE |
SPECIFICTYPE |
SQL |
SQL |
SQL |
SQLCODE |
|
|
SQLERROR |
|
|
SQLEXCEPTION |
SQLEXCEPTION |
SQLEXCEPTION |
SQLSTATE |
SQLSTATE |
SQLSTATE |
SQLWARNING |
SQLWARNING |
SQLWARNING |
|
START |
START |
|
STATE |
|
|
STATIC |
STATIC |
|
|
SUBMULTISET |
SUBSTRING |
|
|
SUM |
|
|
|
SYMMETRIC |
SYMMETRIC |
|
SYSTEM |
SYSTEM |
SYSTEM_USER |
SYSTEM_USER |
SYSTEM_USER |
TABLE |
TABLE |
TABLE |
|
|
TABLESAMPLE |
TEMPORARY |
TEMPORARY |
|
THEN |
THEN |
THEN |
TIME |
TIME |
TIME |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP |
TIMEZONE_HOUR |
TIMEZONE_HOUR |
TIMEZONE_HOUR |
TIMEZONE_MINUTE |
TIMEZONE_MINUTE |
TIMEZONE_MINUTE |
TO |
TO |
TO |
TRAILING |
TRAILING |
TRAILING |
TRANSACTION |
TRANSACTION |
|
TRANSLATE |
|
|
TRANSLATION |
TRANSLATION |
TRANSLATION |
|
TREAT |
TREAT |
|
TRIGGER |
TRIGGER |
TRIM |
|
|
TRUE |
TRUE |
TRUE |
|
UNDER |
|
UNDO |
UNDO |
UNDO |
UNION |
UNION |
UNION |
UNIQUE |
UNIQUE |
UNIQUE |
UNKNOWN |
UNKNOWN |
UNKNOWN |
|
UNNEST |
UNNEST |
UNTIL |
UNTIL |
UNTIL |
UPDATE |
UPDATE |
UPDATE |
UPPER |
|
|
USAGE |
USAGE |
|
USER |
USER |
USER |
USING |
USING |
USING |
VALUE |
VALUE |
VALUE |
VALUES |
VALUES |
VALUES |
VARCHAR |
VARCHAR |
VARCHAR |
VARYING |
VARYING |
VARYING |
VIEW |
VIEW |
|
WHEN |
WHEN |
WHEN |
WHENEVER |
WHENEVER |
WHENEVER |
WHERE |
WHERE |
WHERE |
WHILE |
WHILE |
WHILE |
|
WINDOW |
WINDOW |
WITH |
WITH |
WITH |
|
WITHIN |
WITHIN |
|
WITHOUT |
WITHOUT |
WORK |
WORK |
|
WRITE |
WRITE |
|
YEAR |
YEAR |
YEAR |
ZONE |
ZONE |
|