|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
Есть таблица T с полями A, B, C ,D Задача дублировать каждую строку по количеству значения в поле D раз. То есть Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Новые строки вставляют в конец таблицы и есть вероятность, что они также будут обрабатывать до бесконечности или пока тейблспейс не закончится. А если commit поставить ? Код: plsql 1. 2. 3. 4. 5.
спасёт или тут таблица будет выглядеть обновленной для этого курсора? Вообще вопрос как можно сделать такого рода insert? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 10:17 |
|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
Прошу прощения... утро Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 10:50 |
|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
your_frend Новые строки вставляют в конец таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 10:54 |
|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
Сам спросил, сам протестировал) создал тестовую таблицу добавил поле K дал значение 1 Declare cnt T.C%TYPE; begin for RT IN (select * from T) LOOP cnt:=RT.C; if RT.K =2 THEN RAISE_APPLICATION_ERROR(-20001,'пошла обработка новых строчек'); end if; while CNT>1 LOOP insert into T (T.A, T.B, T.C ,T.D, TK) values (RT .A, RT .B, RT .C ,RT .D, 2); cnt:= CNT-1; commit; END LOOP; END LOOP: END; Нет тут всё окей добавилось без проблем, новые строки не обрабатывались. Тему можно закрывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 11:18 |
|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
your_frend, Я на твоем месте все же поинтересовался, почему же ошибка не стреляет ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 11:32 |
|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
oragraf, Вё ок проверил Код: plsql 1. 2.
ABCCOUNT(*)7 7 2 211 11 2 215 57 6 623 65 6 626 68 6 6171 36 2 23001 113 6 6 Единственное поменял : Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 13:39 |
|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
Состояние курсора фиксируется в момент открытия. По этой же причине не будет вставки в таблицу T до бесконечности в Код: plsql 1.
По крайней мере в Oracle, может кто про другие БД скажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 15:10 |
|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
your_frend oragraf, Вё ок проверил ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 20:22 |
|
Добавление строк в таблицу в цикле курсора этой же таблицы
|
|||
---|---|---|---|
#18+
Vlad074 По крайней мере в Oracle, может кто про другие БД скажет. изоляция транзакций корнями уходит в простые файлы. чтобы inser select не зациклился, достаточно перед select определить размер файла. даже если к файлу добавятся новые данные, select не станет их выбирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 02:48 |
|
|
start [/forum/topic.php?fid=52&fpage=29&tid=1880598]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 131ms |
0 / 0 |