2017-07-13 4 views
1

ich Abfrage eine SQL ersetzen zu verwenden, versuchen:Wie eine Zeichenfolge in einer Spalte zu ersetzen, die ein foriegn Schlüssel in einer anderen Tabelle ist

UPDATE mytable SET theId = Replace(theId, 'E', 'T') 

Das Problem ist theId ist ein Schlüssel in einer anderen Tabelle mytable2 als theNumber

der Fehler, den ich bekommen ist:

ERROR: insert or update on table "mytable" violates foreign key constraint "mytable_theId_a0b4efa1_fk_mytable2_theNumber" 
SQL state: 23503 
Detail: Key (theId)=(763755.46T292326.83N) is not present in table "mytable2". 

Es ist wie ich eine Verknüpfung zu tun haben, ersetzen oder etwas irgendwie zugleich, keine Ahnung, wie t Mach das. Oder vielleicht muss ich den Tisch ändern, um die Beziehung kurz loszuwerden, die Änderungen vorzunehmen und die Beziehung irgendwie wieder hinzuzufügen? (keine Ahnung, wie man die Schlüssel usw. fallen lässt.) (In pgAdminIII schauend, kann ich nicht einmal sehen, wo ich den Namen des Schlüssels bekommen würde, um ihn fallen zu lassen und wieder hinzuzufügen)

Ich versuche, einige Werte grundlegend zu ändern eine Zeichenfolge ersetzen.

763755.46E292326.83N

Um dies:

763755.46T292326.83N

Antwort

1
Alter table myTable2 DROP CONSTRAINT mytable_theId_a0b4efa1_fk_mytable2_theNumber 

UPDATE mytable SET theId = Replace(theId, 'E', 'T') 

Alter table myTable2 ADD CONSTRAINT FK_myTable2_theID FOREIGN KEY(theNumber) REFERENCES myTable2(theId) 
+0

okay, bekam den Updates, aber das Hinzufügen meiner Fremdschlüssel zurück gibt mir eine Fehlermeldung: ERROR: Syntaxfehler bei oder in der Nähe von "fremden" LINE 1: Tabelle ändern mytable ADD CONSTRAINT FREMDSCHLÜSSEL ( – Codejoy

+0

) Ich habe die Antwort bearbeitet, versuchen Sie es jetzt. –

Verwandte Themen