Registriert seit: 28. Apr 2008
1.717 Beiträge
FreePascal / Lazarus
|
AW: FOREIGN KEY ausgeben?
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!
|
|
Zitat
|