
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
27.02.2018, 14:05:38
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
Есть таблица A с полем A.id Есть таблица B с полями id, header_id, a_id Есть FK B.a_id => A.id Нужно удалить записи из A запросом вида delete from A where A.id in (select a_id from b where header_id=1); update B set a_id=null where header_id=1; но на delete срабатывает FK. Можно ли такую тривиальную задачу решить SQL без временных таблиц и PL/SQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 14:13:03
|
|||
|---|---|---|---|
Вопрос про delete и fk |
|||
|
#18+
Leonid Kudryavtsevно на delete срабатывает FK.SET NULL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 14:13:39
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
Leonid Kudryavtsev , on delete set null ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 14:14:37
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
понятно, что можно FK сделать ON DELETE SET NULL Но потребность выглядит уж больно стандартной. Может я чего не доглядел и можно чисто SQL изобразить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 14:18:47
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
Leonid KudryavtsevМожет я чего не доглядел и можно чисто SQL изобразить? Использовать отложенную проверку ограничений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 14:29:11
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
DDL менять для выполнения простой операции в скрипте - как-то из пушки по воробьям Написать PL/SQL цикл - не проблема просто подумал, может есть какие-то хитрые команды типа MERGE ))), а я темный о них не знаю Удалить из нескольких таблиц сразу вроде можно, а вот удалить и зачистить - не нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 15:11:32
|
|||
|---|---|---|---|
Вопрос про delete и fk |
|||
|
#18+
Leonid KudryavtsevНо потребность выглядит уж больно стандартной.Ага. Для SET NULL. Leonid KudryavtsevМожет я чего не доглядел и можно чисто SQL изобразить?Предпочитающие идти своим путём могут попробовать трюк навроде: Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 15:17:55
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
Leonid KudryavtsevDDL менять для выполнения простой операции в скрипте - как-то из пушки по воробьям А set constraint deferred ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 15:33:16
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
n0rd1c.c0ldLeonid KudryavtsevDDL менять для выполнения простой операции в скрипте - как-то из пушки по воробьям А set constraint deferred ? Глупость написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 15:34:24
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
n0rd1c.c0ldLeonid KudryavtsevDDL менять для выполнения простой операции в скрипте - как-то из пушки по воробьям А set constraint deferred ? ORA-02447 cannot defer a constraint that is not deferrable ))) всюду грабли. Сделал на PL/SQL. Но спасибо за информацию. Ни про ON DELETE SET NULL, ни про SET DEFERRED не знал Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 16:01:23
|
|||
|---|---|---|---|
Вопрос про delete и fk |
|||
|
#18+
Leonid Kudryavtsev... запросом вида delete from A where A.id in (select a_id from b where header_id=1); update B set a_id=null where header_id=1;Выглядит некорректным, в после update в B могут остаться ссылки на A. В предположении допущений по поводу критериев нужности записей A: Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 18:47:48
|
|||
|---|---|---|---|
Вопрос про delete и fk |
|||
|
#18+
-2-, не могу понять зачем IN? update B set a_id=null where a_id in (select a_id from B where header_id=1); ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 19:23:27
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
да не зачем, просто copy-past не глядя ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 21:36:17
|
|||
|---|---|---|---|
|
|||
Вопрос про delete и fk |
|||
|
#18+
Staxне могу понять зачем IN? update B set a_id=null where a_id in (select a_id from B where header_id=1); сравни in (... header_id = 1) и непосредственный header_id = 1id a_id header_id101 10 0101 10 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.02.2018, 10:12:56
|
|||
|---|---|---|---|
Вопрос про delete и fk |
|||
|
#18+
всего две строкиStaxне могу понять зачем IN? update B set a_id=null where a_id in (select a_id from B where header_id=1); сравни in (... header_id = 1) и непосредственный header_id = 1id a_id header_id101 10 0101 10 1 ясно, чет проморгал (ступил) етот момент хотя, судя по первому посту, еще вопрос нужно ли ето Leonid-у Kudryavtsev-у .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&tablet=1&tid=1884361]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
22ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 177ms |
| total: | 281ms |

| 0 / 0 |
