Prior to InterBase 6, metadata names (Tables Names, Stored Procedure Names, Field Names, Trigger Names, Generator Names, Index Names, View Names) were not case sensitive. As of InterBase 6, with Dialect 3, metadata names can now be case sensative using Delimited Identifiers. If you do not use Delimited Identifiers, or do not use Dialect 3, then metadata names remain not case sensative. Delimited identifiers are briefly documented on page 18 of the InterBase 6 Language Reference Manual. Note that the primary reason for delimited identifiers is to allow keywords to be used as fieldnames.
Below is an example using isql showing how Table Names can be case sensative.
SQL> create table i_multikey (f1 int, f2 int);
SQL> /* note that the next statement fails, shows that table creation is not case sensitive*/
CON> create table i_multikey (f1 int, f2 int);
Statement failed, SQLCODE = -607
unsuccessful metadata update
-Table I_MULTIKEY already exists
SQL> insert into i_multikey values (1,2);
SQL> select * from i_multikey;
F1 F2
============ ============
1 2
SQL> /*the next statement works, it shows that selection is not case sensitive*
CON> select * from I_MULTIKEY;
F1 F2
============ ============
1 2
SQL> /*the next statement fails because it uses a delimited identifier where the case does not match*/
CON> select * from "i_multikey";
Statement failed, SQLCODE = -204
Dynamic SQL Error
-SQL error code = -204
-Table unknown
-i_multikey
SQL> /*the next statement works because the delimited indentifier matches*/
CON> select * from "I_MULTIKEY";
F1 F2
============ ============
1 2
SQL> /*now, create a version of the table with identifers and insert and select from it*/
CON> create table "i_multikey" (f1 int, f2 int);
SQL> insert into "i_multikey" values (3,4);
SQL> select * from "i_multikey";
F1 F2
============ ============
3 4
Last Modified: 12-JUL-02