SQLite - Fremdschlüsselkontertionen - IOs 5

8

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

    
ecaste 05.01.2012, 16:19
quelle

4 Antworten

13

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.

    
quelle
4

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

    
ecaste 06.01.2012 09:29
quelle
2

So mache ich es mit FMDB :

%Vor%     
Jahm 05.02.2013 06:20
quelle
0

Es ist auf dem Dokument: SQLite-Dokument

und wenn Sie die Verbindung öffnen:

%Vor%     
giuseppe 06.01.2014 10:37
quelle

Tags und Links