Entwickler-Ecke

Datenbanken - firebird + ZEOS: ALTER und "ALTER" ?


Daniel L. - So 01.07.12 11:20
Titel: firebird + ZEOS: ALTER und "ALTER" ?
Hallo--

Bei meinen ersten Gehversuchen mit Firebird + ZeosLib bin ich auf was merkwürdiges gestoßen:

Mit ibexpert erzeuge ich eine Datenbank mit einer Tabelle und schreibe einige Datensätze hinein.
Die Tabelle hat 2 Felder: Alter (integer) und Name (varChar).

Jetzt in Delphi aufs Formular: ZConnection, ZTable, DataSource und DBGrid.
Dann alles entsprechend untereinander und mit der Datenbank und der Tabelle verbinden.

Starte ich die Anwendung und verbinde die Connection, erscheinen zwar die Daten im Grid, versuche ich aber zu editiern, kommt die Meldung:

Dynamic SQL Error Code 0 -104 Token unknown - line 1, Column 22 ALTER, Invalid token The SQL: UPDATE New_Table SET ALTER=? WHERE ALTER=? AND NAME=?;

Ändere ich nun mit ibexpert den Feldnamen "Alter" in irgendwas anderes, lässt sich in Delphi problemlos editieren.
Kommt da vielleicht irgendwas ducheinander mit der SQL-Anweisung 'ALTER' und meinem Feldnamen 'Alter'??

Firebird 2.5 + ZEOS 7.0.0.0 alpha



leicht verwirrt: Daniel


jaenicke - So 01.07.12 11:46

Reservierte SQL-Bezeichner als Spaltennamen zu verwenden ist keine gute Idee. Manche Datenbanken lassen dies zwar zu, aber man muss das dann in Anführungszeichen packen. Aber selbst wenn das funktioniert ist es absolut unsauber...

Das ist als ob du in Delphi uses oder interface oder so als Variablennamen verwenden willst.

// EDIT:
Mehr dazu findest du in der Dokumentation zu den verschiedenen Datenbanken:
http://www.firebirdsql.org/en/iso-9075-sql-standard-keywords-reserved-words/
http://msdn.microsoft.com/en-us/library/aa238507(SQL.80).aspx
http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html
...


Daniel L. - So 01.07.12 11:56

oh - sind ja schon so einige reservierte Keywords dabei...

danke