【发布时间】:2009-05-16 08:57:37
【问题描述】:
我在一个表中有一个只有 6 个字符长的列,它使用外键约束引用了一个 20 个字符的列。我该如何解决这个问题?
注意:问题是由于 Oracle SQL Developer 编辑表的限制。当我执行特定的更改列时,它运行良好。
【问题讨论】:
标签: oracle foreign-keys
我在一个表中有一个只有 6 个字符长的列,它使用外键约束引用了一个 20 个字符的列。我该如何解决这个问题?
注意:问题是由于 Oracle SQL Developer 编辑表的限制。当我执行特定的更改列时,它运行良好。
【问题讨论】:
标签: oracle foreign-keys
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>
【讨论】:
解决问题的一个可能方法是将 6 个字符的列的大小增加到 20 个字符。
另一种解决方案是您可以在表中创建一个虚拟列,列大小为 20 个字符。将该列的值设置为由函数计算,并定义一个函数,以便为每行中的虚拟列分配 20 个字符列的前六个字符的值。然后使用外键约束。
【讨论】: