Constraints für "NOT NULL" temporär deaktivieren

winnewoerp

Benutzer
Beiträge
9
Ich muss Stück für Stück Rohdaten per SQLite importieren. Dabei benötige ich für die spätere Datenbankkonsistenz NOT-NULL-Constraints für einen Fremdschlüssel, den ich aber beim ersten Import nicht verfügbar habe. Wie kann ich per SQLite diese Art von Constraints temporär deaktivieren? Auf Pragma statements supported by SQLite habe ich nur PRAGMA foreign_keys = [boolean] und PRAGMA ignore_check_constraints = [boolean]; gefunden, leider aber keine Möglichkeit, NOT-NULL-Constraints übergangsweise zu umgehen.

Hat jemand einen Tipp?

Vielen Dank
winnewoerp
 
Werbung:

dabadepdu

Datenbank-Guru
Beiträge
1.179
Naja, wenn es um einen Fremdschlüssel geht, könntest Du den ja mit dem Pragma auch deaktivieren und einen Ersatzwert für Null verwenden.
Am Ende tut's vielleicht einfach ein ALTER Statement, das das NOT NULL erstmal entfernt. Später mit erneutem ALTER dann wieder rückgängig machen.
 

winnewoerp

Benutzer
Beiträge
9
Danke! Ich bin ein SQLite-Anfänger und hatte gelesen, dass man NOT-NULL-Constraints dort nicht per ALTER "wegbekommt" (und "hinbekommt"), sondern immer die Tabelle neu erstellen muss (siehe z.B. hier bei Stackoverflow). Dann geht das nicht mit SQLite, oder? Wie auch immer, habe mir den Fremdschlüssel einfach schon in der CSV-Datei passend zurechtgebaut und mit importiert.
 

dabadepdu

Datenbank-Guru
Beiträge
1.179
Ich bin ein SQLite-Anfänger und hatte gelesen, dass man NOT-NULL-Constraints dort nicht per ALTER "wegbekommt"
Ach, tatsächlich. Das wusste ich nicht. Der Weg wäre dann, eine andere Tabelle zu erstellen, die alle gewünschten Optionen beinhaltet und sie mit Select aus dem Original zu befüllen und dann die Tabellennamen zu ändern.
 
Werbung:
Oben