On Jan 10, 2005, at 6:00 PM, D. Richard Hipp wrote:

> A user has reported a bug saying that SQLite does
> not allow the '$' in the middle of indentifiers
> (without quoting).  The bug reports says that
> statements like this:
>
>    CREATE TABLE ex$1( col$abc INTEGER );
>
> are legal and work fine in other database engines.
> This seems very odd to me.  Can anybody else
> confirm the use of '$' in the middle of identifier
> names in other database engines?

Firebird (and Interbase) use RDB$ as a prefix for many built-in names.

The Interbase 6 Language Reference says

> When an applications programmer or end user creates a database
> object or refers to it by name, case is unimportant. The following
> limitations on naming database objects must be observed:

> Start each name with an alphabetic character (A�Z or a�z).

> Restrict object names to 31 characters, including dollar signs
> ($), underscores (_), 0 to 9, A to Z, and a to z. Some objects, such
> as constraint names, are restricted to 27 bytes in length.

My reading of the SQL-92 spec leads me to believe that this is an
extension. The spec only seems to require <simple Latin letter>
followed by <simple Latin letter> | <digit> where <simple Latin
letter> is (A�Z or a�z). On the other hand, other characters are
permitted based on a <module character set specification> if the
character is "identified as a letter," "syllable," or "ideograph"; the
only preclusion is that the <identifer>:
> shall not include a <space> character or other <separator>

e


Reply via email to