DbBesonderheiten: Unterschied zwischen den Versionen

Aus bafbal.de
Zur Navigation springen Zur Suche springen
Zeile 38: Zeile 38:
 
==Leerfelderersetzung==
 
==Leerfelderersetzung==
  
 +
* SQLite: IfNull
 +
* Firebird / Interbase: Coalesce
 +
* MariaDB / MySQL: IfNull
 +
* PostgreSQL: Coalesce
 +
* MS SQL: IsNull
 +
* Oracle: NVL
  
 +
==Stringverbindung==
  
 
+
* SQLite: IfNull
 
+
* Firebird / Interbase: Coalesce
 
+
* MariaDB / MySQL: IfNull
    if (LDriverName = 'sqlite') or (LDriverName = 'mysql') then
+
* PostgreSQL: Coalesce
      result := Format('ifnull(%s, %s)', [AParams[1], AParams[2]])
+
* MS SQL: IsNull
    else if (LDriverName = 'firebird') or (LDriverName = 'postgres') then
+
* Oracle: NVL
      result := Format('coalesce(%s, %s)', [AParams[1], AParams[2]])
 
    else if LDriverName = 'oracle' then
 
      result := Format('NVL(%s, %s)', [AParams[1], AParams[2]])
 
    else if LDriverName = 'mssql' then
 
      result := Format('isnull(%s, %s)', [AParams[1], AParams[2]]);
 
  end;
 

Version vom 14. August 2021, 11:36 Uhr

Besonderheiten der unterstützten Datenbanksysteme

SQL ist eine genormte Datenbanksprache, in der Theorie sollten sich alle unterstützen Datenbanksysteme recht ähnlich verhalten. In der Praxis gibt es doch erhebliche Unterschiede. Es ist der Anspruch von BAF, diese Unterschiede "im Hintergrund" auszugleichen, sofern man sich bei der Programmierung "auf ausgetretenen Pfaden" bewegt.

Auf dieser Seite sollen einige Erkenntnisse zum unterschiedlichen Verhalten der verwendeten Datenbanksysteme dargestellt werden.

Unterstützte Datenbanksysteme

Grundsätzlich sollte alles igendwie funktionieren, was Devart UniDac unterstützt. Offiziell unterstützt werden

  • SQLite
  • Firebird / Interbase
  • MariaDB / MySQL
  • PostgreSQL
  • MS SQL
  • Oracle

CREATE TABLE

Primary Key

  • SQLite: Eine Spalte, die als PRIMARY KEY definiert wird, wird mit aufsteigenden Zahlen gefüllt, unabhängig davon, was der Anwender dem INSERT-Statement mitgibt. Da BAF GUIDs verwendet, wird PRIMARY KEY durch UNIQUE ersetzt.

Spaltenbezeichner

Manche Spaltenbezeichner sind bei dem einen Datenbanksystem problemlos möglich und bei einem anderen geschützte Wörter, die nicht verwendet werden dürfen. Bei den folgenden Spaltenbezeichnern wird automatisch ein c (wie column) davor gesetzt:

  • key
  • value
  • start
  • sort
  • text
  • password

Typen

Leerfelderersetzung

  • SQLite: IfNull
  • Firebird / Interbase: Coalesce
  • MariaDB / MySQL: IfNull
  • PostgreSQL: Coalesce
  • MS SQL: IsNull
  • Oracle: NVL

Stringverbindung

  • SQLite: IfNull
  • Firebird / Interbase: Coalesce
  • MariaDB / MySQL: IfNull
  • PostgreSQL: Coalesce
  • MS SQL: IsNull
  • Oracle: NVL