204 Stimmen

Wie füge ich einen Fremdschlüssel zu einer bestehenden SQLite-Tabelle hinzu?

Ich habe die folgende Tabelle:

CREATE TABLE child( 
  id INTEGER PRIMARY KEY, 
  parent_id INTEGER, 
  description TEXT);

Wie füge ich eine Fremdschlüssel-Beschränkung für parent_id ? Angenommen, Fremdschlüssel sind aktiviert.

Die meisten Beispiele gehen davon aus, dass Sie die Tabelle erstellen - ich möchte die Einschränkung zu einer bestehenden Tabelle hinzufügen.

-2voto

saeed khalafinejad Punkte 1132

Im Grunde kann man das nicht, aber man kann die Situation umgehen.

Der richtige Weg, um die Fremdschlüssel-Beschränkung zu einer bestehenden Tabelle hinzuzufügen, ist der folgende Befehl.

db.execSQL("alter table child add column newCol integer REFERENCES parent(parent_Id)");

Kopieren Sie dann die übergeordnete_Id Daten an den newCol und löschen Sie dann die Übergeordnete_Id Spalte. Daher ist eine temporäre Tabelle nicht erforderlich.

-3voto

Fügen Sie zunächst eine Spalte in der untergeordneten Tabelle hinzu Cid als int dann alter table mit dem unten stehenden Code. Auf diese Weise können Sie den Fremdschlüssel hinzufügen Cid als Primärschlüssel der übergeordneten Tabelle und verwenden Sie es als Fremdschlüssel in der untergeordneten Tabelle ... hoffe, es wird Ihnen helfen, wie es für mich gut ist:

ALTER TABLE [child] 
  ADD CONSTRAINT [CId] 
  FOREIGN KEY ([CId]) 
  REFERENCES [Parent]([CId]) 
  ON DELETE CASCADE ON UPDATE NO ACTION;
GO

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X