2009-05-15 8 views
0

Ich habe eine Spalte, die nur 6 Zeichen lang in einer Tabelle ist, die auf eine Spalte verweist, die 20 Zeichen unter Verwendung einer Fremdschlüsseleinschränkung ist. Wie behebe ich das?Ändern einer Spalte in Oracle, die eine Fremdschlüsseleinschränkung hat

Hinweis: Das Problem wurde durch die Einschränkung der Oracle SQL Developer Edit-Tabelle verursacht. Als ich die spezifische Alterspalte ausführte, funktionierte es gut.

Antwort

6
SQL> create table parent_tbl(col1 char(20) primary key); 
Table created. 
SQL> create table child_tbl(col1 char(6) primary key, constraint col1_fk foreign key (col1) references parent_tbl(col1)); 
Table created. 
SQL> alter table child_tbl modify col1 char(20); 
Table altered. 
SQL> 
1

Eine der möglichen Lösungen für Ihr Problem könnte sein, dass Sie die Größe der Spalte von 6 Zeichen auf 20 Zeichen erhöhen.

Eine andere Lösung könnte sein, dass Sie in der Tabelle eine Dummy-Spalte mit einer Spaltengröße von 20 Zeichen erstellen können. Legen Sie den Wert dieser Spalte fest, der von einer Funktion berechnet werden soll, und definieren Sie eine Funktion, bei der der Dummy-Spalte in jeder Zeile ein Wert der ersten sechs Zeichen einer 20-Zeichen-Spalte zugewiesen wird. Verwenden Sie dann die Fremdschlüsseleinschränkung.

Verwandte Themen