|
как динамически подставить имя таблицы в DELETE внутри фунции
|
|||
---|---|---|---|
#18+
Amazon Aurora PostgreSQL 9.6.8 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.9.3, 64-bit Код: 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.
ERROR: 42601: syntax error at or near "TABLE" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 23:26 |
|
как динамически подставить имя таблицы в DELETE внутри фунции
|
|||
---|---|---|---|
#18+
dburtsev1 FROM information_schema.tables WHERE table_type = ''BASE TABLE'' AND table_schema NOT IN ERROR: 42601: syntax error at or near "TABLE" Нужно делать where tables.table_type = ''BASE TABLE'' и можно оставить and table_schema not in И проверить, что не двойные кавычки, а две ординарные. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 00:37 |
|
как динамически подставить имя таблицы в DELETE внутри фунции
|
|||
---|---|---|---|
#18+
dburtsev1, Ошибка в команде DELETE, слово TABLE лишнее. Кроме этого: 1. Если удаляете все строки, то лучше выполнять TRUNCATE вместо DELETE. 2. Запрос предполагает выбор таблиц из разных схем, поэтому имя схемы лучше подставлять явно. 3. Цикл FOR с запросом выглядит проще чем цикл с предварительным объявлением курсора. 4. COMMIT внутри функции работать не будет. 4. Строку с телом функции лучше оформить через двойные знаки $: $$DECLARE ... END;$$ Это избавит от необходимости экранировать одинарные кавычки внутри. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 12:51 |
|
как динамически подставить имя таблицы в DELETE внутри фунции
|
|||
---|---|---|---|
#18+
спасибо всем, заработало Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 19:29 |
|
как динамически подставить имя таблицы в DELETE внутри фунции
|
|||
---|---|---|---|
#18+
dburtsev1спасибо всем, заработало Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
здесь пишут, в частности, такое: https://stackoverflow.com/questions/11419536/postgresql-truncation-speed/11423886#11423886 авторDetailed explanation of TRUNCATE vs DELETE FROM: While not an expert on the topic, my understanding is that TRUNCATE has a nearly fixed cost per table, while DELETE is at least O(n) for n rows; worse if there are any foreign keys referencing the table being deleted. I always assumed that the fixed cost of a TRUNCATE was lower than the cost of a DELETE on a near-empty table, but this isn't true at all. TRUNCATE table; does more than DELETE FROM table; The state of the database after a TRUNCATE table is much the same as if you'd instead run: DELETE FROM table; VACCUUM (FULL, ANALYZE) table; (9.0+ only, see footnote) ... though of course TRUNCATE doesn't actually achieve its effects with a DELETE and a VACUUM. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 10:30 |
|
|
start [/forum/topic.php?fid=53&msg=39708229&tid=1995572]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 404ms |
0 / 0 |