Ich habe ein Problem. Ich möchte eine neue Spalte in meine Tabelle einfügen, die auf eine andere Spalte in einer anderen Tabelle verweist. Ich mache so etwas:Spalte mit Fremdschlüssel in Tabelle einfügen.
class m161202_153033_dodanie_informacji_o_obsludze_prawnej_do_pozyczki extends CDbMigration
{
public function safeUp()
{
$this->execute("ALTER TABLE loan ADD COLUMN administrator int NOT NULL DEFAULT 15 REFERENCES person (id) ON UPDATE CASCADE ON DELETE NO ACTION;");
}
public function safeDown()
{
$this->execute("ALTER TABLE loan DROP COLUMN administrator;");
}
}
Aber wenn ich versuche, diese Migration ich diesen Fehler haben auszuführen:
Foreign key violation: 7 DETAIL: Key (administrator)=(15) doesn't appear in table "person"..
Ich weiß, dass es keine Spalte „Administrator“ in meinem Tisch saugen. Aber ich möchte neue Spalte "Administrator" in Kredit-Tabelle hinzufügen. Ich wollte "Administrator" Fremdschlüssel aus Personentabelle, Spalte "ID" machen. Kannst du mir helfen, was mache ich falsch?
Versuchen Aber es ist Reihe persönlich mit id gleich 15. Es ist PK in dieser Tabelle und im die Person mit dieser ID. Und diese PK von Person sollte FK in Darlehen sein. – Speedvees
Sie müssen einen Fehler gemacht haben. Die Fehlermeldung besagt zweifelsfrei, dass zu dem Zeitpunkt, als der "ALTER TABLE" lief, keine Person "ID" 15 hatte. Haben Sie in die falsche Datenbank geschaut? Gibt es mehr als eine Tabelle "Person" in verschiedenen Schemas? –