我在一个表中只有6个字符的列,该表使用外键约束引用了20个字符的列。我该如何解决这个问题?
注意:问题是由于Oracle SQL Developer Edit表的限制。当我执行特定的更改列时,它工作正常。
答案 0 :(得分: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 :(得分:1)
您的问题的一个可能解决方案可能是将6个字符的列大小增加到20个字符。
另一种解决方案可能是您可以在表中创建一个列大小为20个字符的虚拟列。设置要由函数计算的该列的值,并定义一个函数,以便为每行中的虚拟列分配20个字符列的前六个字符的值。然后使用外键约束。