Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#25

Re: Firebird Fehler (-206) Coloumn doesnt belong to table!

  Alt 2. Dez 2009, 00:15
Zitat von Firebird-FAQ:
Double-quoted identifiers

Before the SQL-92 standard, it was not legal to have object names (identifiers) in a database that duplicated keywords in the language, were case-sensitive or contained spaces. SQL-92 introduced a single new standard to make any of them legal, provided that the identifiers were defined within pairs of double-quote symbols (ASCII 34) and were always referred to using double-quote delimiters.

The purpose of this “gift” was to make it easier to migrate metadata from non-standard RDBMSs to standards-compliant ones. The down-side is that, if you choose to define an identifier in double quotes, its case-sensitivity and the enforced double-quoting will remain mandatory.

Firebird does permit a slight relaxation under a very limited set of conditions. If the identifier which was defined in double-quotes:

1. was defined as all upper-case,
2. is not a keyword, and
3. does not contain any spaces,

...then it can be used in SQL unquoted and case-insensitively. (But as soon as you put double-quotes around it, you must match the case again!)
Warning

Unless you have a compelling reason to define quoted identifiers, it is usually recommended that you avoid them. Firebird happily accepts a mix of quoted and unquoted identifiers – so there is no problem including that keyword which you inherited from a legacy database, if you need to.
Warning
Wichtig ist das "remain mandatory". D.h. sinngemäss : einmal Quotes und immer Case-sensitiv. Es ist also wichtig, mit diesem Firlefanz gar nicht erst anzufangen "it is usually recommended that you avoid them". In IBExpert existiert übrigens eine Checkbox "always capatilize database object names", da sollte man einen Haken setzen und fertig. Noch eine Fehlerquelle ist das Zusammensetzen der Insert-Statements im eigenen Quelltext, anstatt die TDataset-Methode Dataset.Insert; zu benutzen.
Gruß
Hansa
  Mit Zitat antworten Zitat