Thema: Delphi FOREIGN KEY ausgeben?

Einzelnen Beitrag anzeigen

AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#26

AW: FOREIGN KEY ausgeben?

  Alt 25. Okt 2012, 18:22
Hier

Delphi-Quellcode:
procedure TForm1.DBErstellenMMClick(Sender: TObject);
var dbFile: String;
    db: TSQLiteDatabase;
    sSQL, sSQL1: String;
begin
  dbFile := ExtractFilePath(Application.ExeName) + 'Database.db';
  db := TSQLiteDatabase.Create(dbFile);
  try

    // Tabelle leser wird, sofern sie existiert, gelöscht
    if db.TableExists('leser') then
    begin
      sSQL1 := 'DROP TABLE leser';
      db.execSQL(sSQL1);
    end;

    // Tabelle buch wird, sofern sie existiert, gelöscht
    if db.TableExists('buch') then
    begin
      sSQL := 'DROP TABLE buch';
      db.execSQL(sSQL);
    end;

    // Enable foreign key constraints
    db.execSQL('PRAGMA foreign_keys = ON;'); <---- HIER

    // Tabelle leser wird angelegt
    sSQL1 := 'CREATE TABLE leser ..... usw;

// Tabelle buch wird angelegt
sSQL :=
'CREATE TABLE buecher ([id] INTEGER PRIMARY KEY NOT NULL, [titel] VARCHAR (255) NOT NULL,';
sSQL := sSQL +
'[fk_leser_id] INTEGER, FOREIGN KEY(fk_leser_id) REFERENCES leser(id) ON DELETE RESTRICTED);';

// Create Befehl wird ausgeführt
db.execSQL(sSQL1);
db.execSQL(sSQL);

// Transaktion beginnt
db.BeginTransaction;

// leser Tabelle füllen
sSQL1 :=
'INSERT INTO leser ... usw.;

    // buch Tabelle füllen
    sSQL := 'INSERT INTO buch ... usw.;

// Insert Befehl wird ausgeführt
db.ExecSQL(sSQL1);
db.ExecSQL(sSQL);

// Transaktion endet
db.Commit;

finally
db.Free;
end;

ShowData();
end;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat