Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
vladacval
Как я понял скрипт никто не поможет написать?


может, но лень. Покажи что ты наваял.

SY.
28 фев 12, 16:54    [12165176]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
Мир труд жвачка
Member

Откуда:
Сообщений: 1527
vladacval
Как я понял скрипт никто не поможет написать?

Невозможно одним delete удалить из трех таблиц, если не привлекать дополнительные средства как FKs on delete cascade, триггеры и т.д.

Сделай 3 отдельных delete. Или именно это не можешь сделать?
Если ссылочная целостность проблема - то либо удаляй с конца дерева либо отложенные констрейнты сделай.
28 фев 12, 16:55    [12165181]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
AmKad
Member

Откуда:
Сообщений: 5222
ORA__SQL
1. select UID bulk collect into ... from rc where DATE = ...
2. delete from rc where DATE = ...

delete ... where ... returning
28 фев 12, 16:55    [12165188]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
vladacval
Member

Откуда:
Сообщений: 73
Мир труд жвачка
vladacval
Как я понял скрипт никто не поможет написать?

Невозможно одним delete удалить из трех таблиц, если не привлекать дополнительные средства как FKs on delete cascade, триггеры и т.д.

Сделай 3 отдельных delete. Или именно это не можешь сделать?
Если ссылочная целостность проблема - то либо удаляй с конца дерева либо отложенные констрейнты сделай.


delete from sc where uid in (select UID from rc where UID = 'SRV112IDT233Y2CFMU4TO4OCGZWWXKFLRGJLY') - работает


но как только начинаешь делать delete from lc where uid in (select UID from rc where UID = 'SRV112IDT233Y2CFMU4TO4OCGZWWXKFLRGJLY') - ошибка ORA-02292: нарушено ограничение целостности (ASCMC.SYS_C0011702) - обнаружена порожденная запись
28 фев 12, 16:58    [12165214]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
vladacval
Member

Откуда:
Сообщений: 73
ORA__SQL
vladacval
в первые вижу такую конструкцию. А полностью для этих 3 таблиц как она будет выглядеть?
ПОЖАЛУЙСТА НАПИШИТЕ ВЕСЬ СКРИПТ, ЕСЛИ НЕ ТРУДНО
Не поверишь :)
1. select UID bulk collect into ... from rc where DATE = ...
2. delete from rc where DATE = ...
3. delete from sc where uid in (select from column_value table(cast( ... as ... ) ) )
4. delete from lc where uid in (select from column_value table(cast( ... as ... ) ) )



а что писать в into ??
и в as ????
28 фев 12, 17:02    [12165239]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
TAVEM
Member

Откуда:
Сообщений: 122
vladacval
ORA__SQL
пропущено...
Не поверишь :)
1. select UID bulk collect into ... from rc where DATE = ...
2. delete from rc where DATE = ...
3. delete from sc where uid in (select from column_value table(cast( ... as ... ) ) )
4. delete from lc where uid in (select from column_value table(cast( ... as ... ) ) )



а что писать в into ??
и в as ????

Картинка с другого сайта.
28 фев 12, 17:02    [12165243]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
AmKad
ORA__SQL
1. select UID bulk collect into ... from rc where DATE = ...
2. delete from rc where DATE = ...
delete ... where ... returning
Согласен
28 фев 12, 17:02    [12165244]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
vladacval
Member

Откуда:
Сообщений: 73
[quot vladacval]
ORA__SQL
пропущено...
Не поверишь :)
1. select UID bulk collect into ... from rc where DATE = ...
2. delete from rc where DATE = ...
3. delete from sc where uid in (select from column_value table(cast( ... as ... ) ) )
4. delete from lc where uid in (select from column_value table(cast( ... as ... ) ) )


Напишите полность скриптец и я от вас от всех отстану =)))) Что вместо многоточие там писать???
28 фев 12, 17:04    [12165271]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
vladacval
Напишите полность скриптец и я от вас от всех отстану =))))
тебя проще забанить
vladacval
Что вместо многоточие там писать???
Создай SQL type и переменную на его основе.
28 фев 12, 17:07    [12165290]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
sixers
Member

Откуда:
Сообщений: 146
[quot vladacval]
vladacval
пропущено...


Напишите полность скриптец и я от вас от всех отстану =)))) Что вместо многоточие там писать???


надеюсь поможет

автор
но как только начинаешь делать delete from lc where uid in (select UID from rc where UID = 'SRV112IDT233Y2CFMU4TO4OCGZWWXKFLRGJLY') - ошибка ORA-02292: нарушено ограничение целостности (ASCMC.SYS_C0011702) - обнаружена порожденная запись


из lc удаляешь в последнюю очередь ))
28 фев 12, 17:08    [12165294]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
TAVEM
Member

Откуда:
Сообщений: 122
[quot vladacval]
vladacval
пропущено...


Напишите полность скриптец и я от вас от всех отстану =)))) Что вместо многоточие там писать???

что там писать спроси у преподователя/работодателя/гугла/яндекса
28 фев 12, 17:09    [12165298]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
vladacval
Member

Откуда:
Сообщений: 73
[quot sixers]
vladacval
пропущено...


надеюсь поможет

пропущено...


из lc удаляешь в последнюю очередь ))



хаха а как удалить записи в lc если ты удалил записи в rc где есть дата???
ил ты предлагаешь гадать какой uid относится кто или иной записи??
28 фев 12, 17:10    [12165309]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
Мир труд жвачка
Member

Откуда:
Сообщений: 1527
Да, ребята.
Как сами ахинею писать так все рады, потом как носом ткнешь обижаются "ваши грубые комментарии здесь лишние".
Как человек помощи попросил, так обосрали с ног до головы.

Продолжайте, очень занятное зрелище.
28 фев 12, 17:11    [12165322]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
vladacval
хаха а как удалить записи в lc если ты удалил записи в rc где есть дата???
ил ты предлагаешь гадать какой uid относится кто или иной записи??
А предварительно их запомнить не судьба?
28 фев 12, 17:12    [12165330]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
vladacval
Member

Откуда:
Сообщений: 73
Мир труд жвачка
Да, ребята.
Как сами ахинею писать так все рады, потом как носом ткнешь обижаются "ваши грубые комментарии здесь лишние".
Как человек помощи попросил, так обосрали с ног до головы.

Продолжайте, очень занятное зрелище.


А тут всегда так. Надо переименовать сайт в какой-нибудь "чат-волчат"!
28 фев 12, 17:15    [12165354]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
sixers
Member

Откуда:
Сообщений: 146
vladacval
Мир труд жвачка
Да, ребята.
Как сами ахинею писать так все рады, потом как носом ткнешь обижаются "ваши грубые комментарии здесь лишние".
Как человек помощи попросил, так обосрали с ног до головы.

Продолжайте, очень занятное зрелище.


А тут всегда так. Надо переименовать сайт в какой-нибудь "чат-волчат"!


declare 
  v_rcdate date :=to_date ('2012.01.01', 'YYYY.MM.DD' );
  Type UID_t Is Table Of lc.UID%Type Index By Pls_Integer;
  UID_array UID_t;

  delete from rc where rc.your_date = v_rcdate returning rc.uid bulk collect into UID_array;
  commit;
  
  forall idx in  UID_array.first .. UID_array.last  
    delete from sc where sc.uid = UID_array(idx);
    commit; 
    
  forall idx in  UID_array.first .. UID_array.last  
    delete from lc where lc.uid = UID_array(idx);
  commit;     
end;
28 фев 12, 17:20    [12165389]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
TAVEM
Member

Откуда:
Сообщений: 122
sixers
vladacval
пропущено...


А тут всегда так. Надо переименовать сайт в какой-нибудь "чат-волчат"!


declare 
  v_rcdate date :=to_date ('2012.01.01', 'YYYY.MM.DD' );
  Type UID_t Is Table Of lc.UID%Type Index By Pls_Integer;
  UID_array UID_t;

  delete from rc where rc.your_date = v_rcdate returning rc.uid bulk collect into UID_array;
  commit;
  
  forall idx in  UID_array.first .. UID_array.last  
    delete from sc where sc.uid = UID_array(idx);
    commit; 
    
  forall idx in  UID_array.first .. UID_array.last  
    delete from lc where lc.uid = UID_array(idx);
  commit;     
end;

всех чмоке в этом чате :)
28 фев 12, 17:21    [12165405]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
Деферратор
Guest
sixers
declare 
  v_rcdate date :=to_date ('2012.01.01', 'YYYY.MM.DD' );
  Type UID_t Is Table Of lc.UID%Type Index By Pls_Integer;
  UID_array UID_t;

  delete from rc where rc.your_date = v_rcdate returning rc.uid bulk collect into UID_array;
  commit;
  
  forall idx in  UID_array.first .. UID_array.last  
    delete from sc where sc.uid = UID_array(idx);
    commit; 
    
  forall idx in  UID_array.first .. UID_array.last  
    delete from lc where lc.uid = UID_array(idx);
  commit;     
end;
не взлетит при наличии immediate FK, а в отсутсвие FK чревато проблемами при конкуренции.
28 фев 12, 17:25    [12165441]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
vladacval
Member

Откуда:
Сообщений: 73
TAVEM
sixers
пропущено...


declare 
  v_rcdate date :=to_date ('2012.01.01', 'YYYY.MM.DD' );
  Type UID_t Is Table Of lc.UID%Type Index By Pls_Integer;
  UID_array UID_t;

  delete from rc where rc.your_date = v_rcdate returning rc.uid bulk collect into UID_array;
  commit;
  
  forall idx in  UID_array.first .. UID_array.last  
    delete from sc where sc.uid = UID_array(idx);
    commit; 
    
  forall idx in  UID_array.first .. UID_array.last  
    delete from lc where lc.uid = UID_array(idx);
  commit;     
end;

всех чмоке в этом чате :)



ORA-06550: Строка 6, столбец 3:
PLS-00103: Встретился символ "DELETE" в то время как ожидалось одно из следующих:

begin function package pragma procedure subtype type use
<идентификатор>
<идентификатор с двойными кавычками-разделителями> form
current cursor
Символ "begin" заменен на "DELETE", чтобы можно было продолжать.
ORA-06550: Строка 7, столбец 9:
PLS-00103: Встретился символ "end-of-file" в то время как ожидалось одно из следующих:

begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<идентификатор>
<идентификатор
28 фев 12, 17:34    [12165521]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Деферратор
не взлетит при наличии immediate FK, а в отсутсвие FK чревато проблемами при конкуренции.

Судя по первому посту автора, lc - master-таблица, остальные подчиненные.

vladacval,

в нужном месте нужно поставить begin.
28 фев 12, 17:36    [12165540]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
sixers
Member

Откуда:
Сообщений: 146
vladacval,

begin добавь -)
28 фев 12, 17:36    [12165545]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
vladacval
Member

Откуда:
Сообщений: 73
AmKad
Деферратор
не взлетит при наличии immediate FK, а в отсутсвие FK чревато проблемами при конкуренции.

Судя по первому посту автора, lc - master-таблица, остальные подчиненные.

vladacval,

в нужном месте нужно поставить begin.



а где именно?


declare
v_rcdate date :=to_date ('2012.02.19', 'YYYY.MM.DD' );
Type F_UID_t Is Table Of eds_lc.F_UID%Type Index By Pls_Integer;
F_UID_array F_UID_t;

delete from eds_rc where eds_rc.your_date = v_rcdate returning eds_rc.uid bulk collect into F_UID_array;
commit;

forall idx in F_UID_array.first .. F_UID_array.last
delete from eds_sc where eds_sc.uid = F_UID_array(idx);
commit;

forall idx in F_UID_array.first .. F_UID_array.last
delete from eds_lc where eds_lc.uid = F_UID_array(idx);
commit;
end;
28 фев 12, 17:37    [12165557]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
sixers
declare 
  v_rcdate date :=to_date ('2012.01.01', 'YYYY.MM.DD' );
  Type UID_t Is Table Of lc.UID%Type Index By Pls_Integer;
  UID_array UID_t;

  delete from rc where rc.your_date = v_rcdate returning rc.uid bulk collect into UID_array;
  commit;
  
  forall idx in  UID_array.first .. UID_array.last  
    delete from sc where sc.uid = UID_array(idx);
    commit; 
    
  forall idx in  UID_array.first .. UID_array.last  
    delete from lc where lc.uid = UID_array(idx);
  commit;     
end;
Commit после каждого оператора - это сильно
28 фев 12, 17:38    [12165568]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
AmKad
Member

Откуда:
Сообщений: 5222
vladacval
а где именно?
там где
автор
Встретился символ "DELETE" в то время как ожидалось одно из следующих:
28 фев 12, 17:39    [12165582]     Ответить | Цитировать Сообщить модератору
 Re: Удаление из нескольких таблиц соединенных по ключу  [new]
vladacval
Member

Откуда:
Сообщений: 73
Мне вместо delete писать begin??? а где же удаление тогда???


declare
v_rcdate date :=to_date ('2012.02.19', 'YYYY.MM.DD' );
Type F_UID_t Is Table Of eds_lc.F_UID%Type Index By Pls_Integer;
F_UID_array F_UID_t;

delete from eds_rc where eds_rc.your_date = v_rcdate returning eds_rc.uid bulk collect into F_UID_array;
commit;

forall idx in F_UID_array.first .. F_UID_array.last
delete from eds_sc where eds_sc.uid = F_UID_array(idx);
commit;

forall idx in F_UID_array.first .. F_UID_array.last
delete from eds_lc where eds_lc.uid = F_UID_array(idx);
commit;
end;
28 фев 12, 17:42    [12165611]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Oracle Ответить