powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Каскадный update
3 сообщений из 3, страница 1 из 1
Каскадный update
    #38398803
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WI-V2.5.1.26351

Про то, что каскадный update - зло я прочитал. И даже в известном смысле присоединяюсь. Тем не менее.


DDL и данные:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create table m(f1 integer not null primary key, f2 integer);
alter table m add unique(f1, f2);

create table d(f1 integer not null, f2 integer);
alter table d add foreign key(f1, f2) references m(f1, f2) on update cascade; 

insert into m(f1, f2) values (1, 1);
insert into d(f1, f2) values (1, 1);



DML №1:
Код: sql
1.
2.
3.
4.
5.
update m set f2 = 2;
select * from d;
     F1           F2
======= ============
      1            2


Да, так я понимаю каскадный update. Нет вопросов. Но в то же время


Код: sql
1.
2.
3.
4.
SQL> update m set f2 = null;
Statement failed, SQLSTATE = 23000
violation of FOREIGN KEY constraint "INTEG_4377" on table "D"
-Foreign key references are present for the record



Вопрос у меня как обычно - так будет всегда, или это изменится к лучшему, и можно будет "обнуливать" поле детейла по каскаду?
Спасибо.
...
Рейтинг: 0 / 0
Каскадный update
    #38398852
Всё будет хорошо. Если читать доку.pizmon
Код: sql
1.
alter table d add foreign key(f1, f2) references m(f1, f2) on update SET NULL;
...
Рейтинг: 0 / 0
Каскадный update
    #38398860
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос закрыт. Всем спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Каскадный update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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