Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 синтаксис alter table... modify constraint  [new]
hobl
Member

Откуда: Киев
Сообщений: 160
как бы написать, чтобы работало

alter table APPL_DATA modify constraint APPL_DATA_APPL_MAIN_FK on delete cascade;

хочу изменить no action на cascade у foreign key, drop - add это хорошо, но интуиция подсказывает, что и modify должен быть
7 дек 11, 19:10    [11724574]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
hobl,

Constraints can not be altered. They must be dropped and recreated. Some modifications are allowed via ALTER TABLE.
7 дек 11, 19:28    [11724717]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
metrAniksaraT
Member

Откуда: Kiev
Сообщений: 135
hobl
но интуиция подсказывает...

Интуиция вам неверно подсказывает - только пересоздать. Вот все возможные варианты http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_3001.htm#i2103997
7 дек 11, 19:35    [11724765]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
hobl
как бы написать, чтобы работало

alter table APPL_DATA modify constraint APPL_DATA_APPL_MAIN_FK on delete cascade;

хочу изменить no action на cascade у foreign key, drop - add это хорошо, но интуиция подсказывает, что и modify должен быть

ну, что вы? отнюдь..
а вот при пересоздании - возможны варианты (напр. создать без валидации, а дальше - если захочется, валидировать отдельно)
7 дек 11, 19:36    [11724774]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
hobl
Member

Откуда: Киев
Сообщений: 160
Ой спасибо. Какая хорошая новость, что я правильно прочитал спецификацию.. я знал, что не возможно.. но так хотелось.
Большое спасибо, очень признателен
7 дек 11, 20:29    [11725125]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
Visermoz
Member

Откуда: Омск
Сообщений: 128
Доброго времени суток.
Если ли у кого-нибудь идеи или предложения как поступить в ситуации, если нужно изменить констрейнт на on delete cascade, но таких констрейнтов, например, 400 штук.
20 фев 12, 09:34    [12120124]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
А какая разница, сколько их
Рисуешь скрипт, который или подготовит тебе команды для выполнения, либо сам и выполнит через DYNAMIC SQL
Сами крнстрайнты можно найти через USER_CONSTRAINTS
20 фев 12, 09:46    [12120171]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
Visermoz
Member

Откуда: Омск
Сообщений: 128
Вячеслав Любомудров, сложность как раз и возникла на этапе генерации запросов:
в курсоре по DBA_CONSTRAINTS нужно выполнять запросы вида
EXECUTE IMMEDIATE 'ALTER TABLE TEST.T_TEST DROP CONSTRAINT TEST2_FK';
EXECUTE IMMEDIATE 'ALTER TABLE TEST.T_TEST ADD 
(
CONSTRAINT TEST2_FK 
FOREIGN KEY (TEST2_KEY) 
REFERENCES TEST.T_TEST2 (KEY) 
)';


Но достаточно ли в DBA_CONSTRAINTS (или USER_CONSTRAINT) информации для создания подобных заросов? Ведь по этому представлению мы имеем имя таблицы, имя констрейнта, владельца и имя констрейнта таблицы на которую ссылаемся.
Возникает сложность в получении полей (в примере T_TEST.TEST2_KEY и T_TEST.KEY), на которых и строиться констрейнт.
20 фев 12, 10:14    [12120305]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
desc user_cons_columns
20 фев 12, 10:18    [12120335]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис alter table... modify constraint  [new]
Visermoz
Member

Откуда: Омск
Сообщений: 128
Вячеслав Любомудров, большое вам спасибо
20 фев 12, 10:25    [12120364]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить