Tach!
Ich würde in sql immer backtics verwenden, also
Ich nicht.
- macht den Code schlechter lesbar und erhöht die Komplexität
Letzteres ja, über ersteres kann man streiten. Es gibt so viele Dinge in Code, die quotiert werden müssen, da kommt es auf die paar auch nicht mehr an. Daran muss man sich als Programmierer gewöhnen. Leerzeichen und Zeilenumbrüche zur optischen Abgrenzung sind wichtiger.
- macht das SQL weniger portabel (weil ist nicht Standard-gerecht escaped)
YAGNI! Gern gebracht dieses Argument, aber wie oft kommt das denn im Leben vor, dass man das DBMS wechselt und dann noch dazu nur standardkonforme Dinge und keine auch anderswo reservierten Wörter verwendet hat? Das wird zum Beispiel schon bei Autoincrement-Feldern schwierig (gibts mindestens bei Oracle nicht). Das Argument suggeriert, dass man quasi einfach den Verbindungsaufbau ändert und fertig ist mit der Migration, ohne aufgrund der Unterschiede der DBMS sowieso sämtliche Stellen mit Datenbankzugriff überprüfen und neu testen zu müssen. Ein schöner Wunschtraum.
Andererseits kann man mit dem Umstellen einer Option (auch zur Laufzeit) auch MySQL dazu bringen, standardkonforme Quotierzeichen an Bezeichnern zu akzeptieren.
Wenn man dieses Argument als Pro für Standardgerechtes Quotieren (Escapen ist das Maskieren innerhalb von String-Literalen) interpretiert, widerspricht das aber deinen beiden anderen Argumenten.
- ist in den meisten Fällen überflüssig; in den Fällen, in denen es nicht überflüssig ist, sollte man lieber den Bezeichner ändern, denn das gibt erfahrungsgemäß sonst nur Probleme
Da fallen mir grad keine ein, wenn man konsequent die Bezeichner quotiert. Andererseits muss man alle reservierten Wörter aller SQL-Dialekte kennen, um nicht in die Keyword-Falle spätestens beim Migrieren (YAGNI) zu tappen. Hatten wir ja erst neulich hier, dass jemand das Problem an einem Bezeichner namens int1 nicht erkannt hat (abgesehen davon, dass das nicht gerade ein sprechender Bezeichner ist). Es ist auch manchmal schwierig andere Bezeichner zu finden. Was würdest du beispielsweise als Ersatz für das reservierte Wort language verwenden, wenn man die Sprache meint, in der ein Text verfasst ist oder die ein Besucher spricht? Abkürzungen sind immer so eine Sache und Verlängerungen erhöhen die Komplexität bei nicht unbedingt steigender Verständlichkeit.
dedlfix.