Изменение столбца в Oracle, который имеет ограничение внешнего ключа - PullRequest
0 голосов
/ 16 мая 2009

У меня есть столбец длиной всего 6 символов в таблице, которая ссылается на столбец длиной 20 символов с использованием ограничения внешнего ключа. Как мне это исправить?

Примечание. Проблема связана с ограничением таблицы редактирования Oracle SQL Developer. Когда я выполнил конкретный столбец alter, он работал нормально.

Ответы [ 2 ]

6 голосов
/ 16 мая 2009
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 голос
/ 16 мая 2009

Одним из возможных решений вашей проблемы может быть увеличение размера столбца из 6 символов до 20 символов.

Другим решением может быть создание в таблице фиктивного столбца с размером столбца 20 символов. Задайте значение этого столбца, которое будет рассчитываться функцией, и определите функцию таким образом, чтобы столбцу-заглушке в каждой строке было присвоено значение первых шести символов столбца из 20 символов. Затем используйте ограничение внешнего ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...