powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / check constraint
2 сообщений из 2, страница 1 из 1
check constraint
    #39423480
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Версия:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production


Пример 1 (все ок).

Код: plsql
1.
2.
3.
4.
5.
create table tst_char(col1 char(20 byte));

insert into tst_char select trunc(dbms_random.value*power(10, 17)) || 'a' from dual;

commit



Код: plsql
1.
select col1, length(col1), lengthb(col1) from tst_char;



COL1 LENGTH(COL1) LENGTHB(COL1)86149130966535718a 20 20

Код: plsql
1.
2.
3.
4.
5.
alter table tst_char modify(col1 varchar2(20 byte));

update tst_char
  set col1 = trim(col1);
select col1, length(col1), lengthb(col1) from tst_char;



COL1 LENGTH(COL1) LENGTHB(COL1)86149130966535718a 18 18

Пример 2.

Все то же самое, что и в примере 1, но добавляем любой check constraint на столбец.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
drop table tst_char purge;

create table tst_char(col1 char(20 byte));

alter table tst_char
add constraint tst_char_chk1 check 
(col1 like '%a%')
enable;

insert into tst_char select trunc(dbms_random.value*power(10, 17)) || 'a' from dual;

commit;

alter table tst_char modify(col1 varchar2(20 byte));



Получаю

Error starting at line : 57 in command -
alter table tst_char modify(col1 varchar2(20 byte))
Error report -
SQL Error: ORA-01439: модифицируемый столбец при смене типа данных должен быть пуст
01439. 00000 - "column to be modified must be empty to change datatype"
*Cause:
*Action:

Можно ли как-то решить этот вопрос без drop/create constraint?
...
Рейтинг: 0 / 0
check constraint
    #39423487
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lary DenisМожно ли как-то решить этот вопрос без drop/create constraint?В constraint-е могут быть условия, зависящие от comparison semantic, которая разная у varchar2 vs char, а стало быть данные могут нарушать ограничение.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / check constraint
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]