|
|
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
5 раз по одной в одной транзакции уже попробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 13:01:09 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaa, можно через compound trigger create table tab1 (id number, dd date, vv varchar2(32)) / create or replace trigger tr_tab1 for update of dd,vv on tab1 compound trigger l_cnt number := 0; after each row is begin l_cnt := l_cnt + 1; if l_cnt > 3 then raise_application_error(-20001, 'Нельзя одновременно обновлять столько строк!'); end if; end after each row; end tr_tab1; / ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 14:10:04 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
arlxgospodin_vasyaa, можно через compound trigger create table tab1 (id number, dd date, vv varchar2(32)) / create or replace trigger tr_tab1 for update of dd,vv on tab1 compound trigger l_cnt number := 0; after each row is begin l_cnt := l_cnt + 1; if l_cnt > 3 then raise_application_error(-20001, 'Нельзя одновременно обновлять столько строк!'); end if; end after each row; end tr_tab1; / проверте на мерже напр вставляет 2 строки меняет две строки и удаляет две строки ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 15:57:11 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax..проверте на мержетвоя мерджефобия не уступает многострокобоязни автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 16:11:43 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax.., но 2 же можно ) 4 - нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 16:38:44 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
-2-stax..проверте на мержетвоя мерджефобия не уступает многострокобоязни автора. імхо compound і мерже в 11-ке работают неправильно ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 09:54:50 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax..compound і мерже в 11-ке работают неправильнос мерджем, и не только с мерджем, могут "неправильно" срабатывать строчные триггеры независимо от их совмещения в compund или через переменную пакета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 10:03:02 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
arlxstax.., но 2 же можно ) 4 - нельзя. авторSQL> select * from tab1; ID DD VV ---------- -------- -------------------------------- 1 2 3 4 SQL> merge into tab1 t using ( 2 select 1 i,'u' o from dual union all 3 select 2 i,'u' o from dual union all 4 select 3 i,'d' o from dual union all 5 select 4 i,'d' o from dual union all 6 select 5 i,'i' o from dual union all 7 select 6 i,'i' o from dual 8 ) m 9 on (t.id=m.i) 10 WHEN MATCHED THEN UPDATE SET t.vv = m.o 11 DELETE WHERE (t.vv='d') 12 WHEN NOT MATCHED THEN INSERT (id,vv) values (m.i,m.o) 13 / merge into tab1 t using ( * ERROR at line 1: ORA-20001: Нельзя одновременно обновлять столько строк! ORA-06512: at "STAX.TR_TAB1", line 6 ORA-04088: error during execution of trigger 'STAX.TR_TAB1' две обновлять можно ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 10:07:14 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
compadre.с мерджем, и не только с мерджем, могут "неправильно" срабатывать строчные триггеры независимо от их совмещения в compund или через переменную пакета. Ну как бы все зависит от понятия "не правильно". Compound предполагает методику free before use, как навеянный веками и единственно возможный вариант. В связи с чем есть подозрение, что там все написано по методу наоте..сь и совмещать merge и compound не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 10:12:44 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax.., stax..UPDATE SET t.vv = m.o Но update же идет 4 записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 10:14:28 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
arlxstax.., stax..UPDATE SET t.vv = m.o Но update же идет 4 записей. двух Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 11:36:26 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax.., сначала обновление 4 записей, потом удаление 2. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 12:19:01 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax.., то есть merge сначала update запись, потом обнаруживает что она попадает под условие delete, и удаляет ее. Если триггер будет for update or delete , то счетчик еще раньше будет "генерить" ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 12:45:29 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39291768&tid=1887671]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
295ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 197ms |
| total: | 590ms |

| 0 / 0 |
