Einzelnen Beitrag anzeigen

Kratons

Registriert seit: 20. Okt 2014
Ort: Deutschland
12 Beiträge
 
FreePascal / Lazarus
 
#1

SQLite: ALTER TABLE if not exists

  Alt 3. Nov 2014, 18:27
Schönen Tag liebe Community,

Ich habe wiedermals ein Problem bei dem ich selbst nicht weiterkomme...
Untzwa möchte ich gerne eine Tabelle in SQLite schritt für schritt überprüfen und gegbenenfalls anpassen,
dies soll so geschehen damit ich im nachhinein einfach ändreungen an der tabellenstruktur vornemen kann ohne die bereits vorhandenen daten zu verlieren.

Da SQLite allerdings die "if not exists" Clause bei Alter Table nicht unterstützt muss ich mich da jetzt irgentwie drumrum schreiben.
Ich bin schonmal dazu gekommen mit PRAGMA table_info die daten abfragen zu wollen, dies funktionirt jedoch nicht und mir wird immerzu nur ein:

Syntax error near "("

ausgegeben...
(Dem neben dem table_info!)

Code:
 dbC.Open; //Datenbank Erstellen falls nicht vorhanden.
  // erstelle Tabelle User falls nicht vorhanden
  dbQ.SQL.Text:='CREATE TABLE if not exists ''user'' (id varchar(36) primary key)';
  dbQ.ExecSQL; dbT.Commit;
  //erstelle spalte name falls nicht vorhanden
  dbQ.SQL.Text:='SELECT name FROM PRAGMA table_info (user)';
  dbQ.ExecSQL; dbT.Commit;
  if dbQ.EOF = True then
  begin
  dbQ.SQL.Text:='ALTER TABLE user ADD COLUMN name varchar(20) unique';
  dbQ.ExecSQL; dbT.Commit;
  end;
danach würde nnoch mehrere spalten kommen, diese sind dan ja aber einfach Copy/Paste....

Ich habs auchschon mit
Code:
  dbQ.SQL.Text:='SELECT name FROM PRAGMA table_info(user)';
und
Code:
  dbQ.SQL.Text:='SELECT name FROM PRAGMA table_info (''user'')';
Probiert leider ohne Ergebniss.

Schonmals vielen Dank für eure Antworten.

Die Antwort: 42
  Mit Zitat antworten Zitat