Es scheint, dass Fremdschlüsseleinschränkungen seit Version 3.6.x in SQLite unterstützt werden. Die Version von SQLite auf IOS5.0 ist 3.7.7 (gefunden in sqlite3.h).
Aber wenn ich versuche, eine Zeile in eine Tabelle einzufügen, die eine Einschränkung hat, wird meine Zeile korrekt eingefügt, auch wenn der zugehörige Fremdschlüssel nicht existiert. Ich habe keinen Fehler.
Wenn ich dieselbe Insert-Anweisung mit Apps wie Navicat einfüge, bekomme ich einen "Constraint violation error error"
Wissen Sie, ob Fremdschlüssel auf IOs 5 unterstützt werden?
Hier ist das Datenbankschema:
%Vor%Wirklich einfach, nicht wahr?
Danke Emmanuel
Fremdschlüssel sind standardmäßig deaktiviert. Sie müssen sie für jede Verbindung separat aktivieren. Die Einstellung ist nicht "sticky". Sie müssen dies jedes Mal tun, wenn Sie eine Verbindung mit einer SQLite-Datenbank herstellen.
%Vor%Die Chancen stehen gut, dass Navicat sich darum kümmert. In Ihrem eigenen Code ist es Ihre Aufgabe.
Ich habe endlich die Lösung gefunden .... und catcall du hattest Recht.
Standardmäßig wird die SQLite-Datenbank mit deaktivierten Fremdschlüsseloptionen geöffnet, selbst wenn die Tabellen mit Fremdschlüsselbeschränkungen erstellt wurden!
Also mach einfach diese einfache Anfrage:
%Vor%unmittelbar nach dem Öffnen der Datenbank und außerhalb einer Transaktion (wenn Sie die Funktion fmdatabase und Transaktionen verwenden)
Hoffe, das wird jemandem anderen helfen.
Emmanuel
Es ist auf dem Dokument: SQLite-Dokument
und wenn Sie die Verbindung öffnen:
%Vor%