Home » U++ Library support » U++ SQL » SQLite On delete cascade .sch ?
Re: SQLite On delete cascade .sch ? [message #51977 is a reply to message #51958] |
Fri, 28 June 2019 21:23 |
|
Xemuth
Messages: 387 Registered: August 2018 Location: France
|
Senior Member |
|
|
Ok problem fixed,
SQlite3 can handle definition like that :
CREATE TABLE "OW_EQUIPES_PLAYERS" (
"EP_EQUIPE_ID" integer FOREIGN KEY("EP_EQUIPE_ID") REFERENCES "OW_EQUIPES"("EQUIPE_ID") ON DELETE CASCADE,
"EP_PLAYER_ID" integer FOREIGN KEY("EP_PLAYER_ID") REFERENCES "OW_PLAYERS"("PLAYER_ID") ON DELETE CASCADE,
);
But it need to be like that :
CREATE TABLE "OW_EQUIPES_PLAYERS" (
"EP_EQUIPE_ID" integer REFERENCES "OW_EQUIPES"("EQUIPE_ID") ON DELETE CASCADE,
"EP_PLAYER_ID" integer REFERENCES "OW_PLAYERS"("PLAYER_ID") ON DELETE CASCADE
);
Well it's logic.
Here is definition of foreign key on sqlite :
#ifndef REFERENCES_
#define REFERENCES_(n, x) INLINE_ATTRIBUTE("REFERENCES " #n "(" #x ")")
#endif
#ifndef REFERENCES_CASCADE_
#define REFERENCES_CASCADE_(n, x) INLINE_ATTRIBUTE("REFERENCES " #n "(" #x ") ON DELETE CASCADE")
#endif
Also, In SQLite, for each connection you do to sqlite, you must need to enable Foreign keys :
Sql sql;
sql.Execute("PRAGMA foreign_keys = ON;");
Personaly I did it at BDD loading :
if(sqlite3.Open("myDB.db")) {
SQL = sqlite3;
#ifdef _DEBUG
SqlSchema sch(SQLITE3);
All_Tables(sch);
if(sch.ScriptChanged(SqlSchema::UPGRADE)){
SqlPerformScript(sch.Upgrade());
}
if(sch.ScriptChanged(SqlSchema::ATTRIBUTES)){
SqlPerformScript(sch.Attributes());
}
if(sch.ScriptChanged(SqlSchema::CONFIG)) {
SqlPerformScript(sch.ConfigDrop());
SqlPerformScript(sch.Config());
}
sch.SaveNormal();
Sql sql;
sql.Execute("PRAGMA foreign_keys = ON;");
#endif
}
I guess, it is possible to enable it automaticly like lot of sqlite database viewer ?
[Updated on: Fri, 28 June 2019 22:15] Report message to a moderator
|
|
|
|
|
SQLite On delete cascade .sch ?
By: Xemuth on Wed, 26 June 2019 20:30
|
|
|
Re: SQLite On delete cascade .sch ?
By: mirek on Thu, 27 June 2019 08:28
|
|
|
Re: SQLite On delete cascade .sch ?
By: Xemuth on Thu, 27 June 2019 10:55
|
|
|
Re: SQLite On delete cascade .sch ?
By: Xemuth on Thu, 27 June 2019 20:55
|
|
|
Re: SQLite On delete cascade .sch ?
By: mirek on Fri, 28 June 2019 08:02
|
|
|
Re: SQLite On delete cascade .sch ?
By: Xemuth on Fri, 28 June 2019 12:23
|
|
|
Re: SQLite On delete cascade .sch ?
By: Xemuth on Fri, 28 June 2019 18:51
|
|
|
Re: SQLite On delete cascade .sch ?
By: Xemuth on Fri, 28 June 2019 20:38
|
|
|
Re: SQLite On delete cascade .sch ?
By: Xemuth on Fri, 28 June 2019 21:23
|
|
|
Re: SQLite On delete cascade .sch ?
By: mirek on Sun, 30 June 2019 19:18
|
|
|
Re: SQLite On delete cascade .sch ?
By: Xemuth on Sun, 30 June 2019 22:00
|
Goto Forum:
Current Time: Sat Apr 27 01:31:03 CEST 2024
Total time taken to generate the page: 0.06501 seconds
|