Warum wird die folgende Fremdschlüsseleinschränkung (obwohl sie ordnungsgemäß ausgeführt wird) von SQLite nicht erzwungen? Wie kann ich die Beziehung verstärken?Fremdschlüssel wird nicht erzwungen
CREATE TABLE User (
UserID TEXT Unique NOT NULL PRIMARY KEY,
FirstName TEXT NOT NULL,
LastName TEXT NOT NULL,
Username TEXT NOT NULL,
Password TEXT NOT NULL,
Email TEXT NOT NULL,
SignupDate TEXT NOT NULL
)
CREATE TABLE Category (
CategoryID TEXT Unique NOT NULL PRIMARY KEY,
UserID TEXT,
FOREIGN KEY(UserID) REFERENCES User(UserID)
)
Vielen Dank für die prompte Antwort so viel. Das habe ich in der Dokumentation nie bemerkt (wird nächstes Mal härter aussehen). Nachdem ich gerade versucht habe, diesen Befehl auszuführen, erhalte ich den folgenden Fehler: "SQLite prepare() ist fehlgeschlagen. FEHLER: Berechtigung verweigert. DETAILS: nicht autorisiert. EXPRESSION: PRAGMA foreign_keys = ON;" Ich nehme an, entweder die Version, die sie verwenden, unterstützt es nicht oder hat die Funktionalität deaktiviert. Kann ich das gleiche Endergebnis mithilfe von Triggern erstellen? Wenn ja, könnte jemand bitte eine Beispiel-Triggersyntax für SQLITE angeben? –
@Maxim, ich glaube, SQLIlite Fremdschlüsselauslöser erfordern genau die gleiche zugrunde liegende Funktionalität wie normale alte Fremdschlüssel (oft in eingebetteten Builds von SQLite entfernt, die kleiner und schneller sein wollen, als sie "volle relationale ACID-Leistung" anbieten wollen) erhebliche Leistungs- und Platzkosten). –