Во время написания кода sql- или plpgsql-функций хочется уменьшить время, которое затрачивается на реализацию типовых фрагментов. К таким фрагментам относятся операторы select, insert,update,delete,truncate при работе с таблицами. К сожалению в pgadmin отсутствует функция автозавершения набираемого текста и поэтому нет возможности быстро генерировать команды манипуляции с таблицами с выбором шаблонов этих команд из контекстного меню.
Чтобы восполнить этот пробел я написал pgadmin-макрос, генерирующий шаблоны команд select, insert,update,delete,truncate для таблицы с подстановкой соответствующих полей этой таблицы.
Текст макроса:
SELECT table_schema, TABLE_NAME, 'select ' || string_agg(COLUMN_NAME, ',') || ' from ' || table_schema || '.' || TABLE_NAME AS query_select, 'insert into ' || table_schema || '.' || TABLE_NAME || '(' || string_agg(COLUMN_NAME, ',') || ') values()' AS query_insert, 'update ' || table_schema || '.' || TABLE_NAME || ' set ' || string_agg(COLUMN_NAME, '= ,') || ' where' AS query_update, 'delete from '|| table_schema || '.' || TABLE_NAME || ' where ' AS query_delete, 'truncate table ' || table_schema || '.' || TABLE_NAME || ' restart identity cascade' AS query_truncate FROM information_schema.columns WHERE NOT (table_schema ILIKE 'pg_%' OR table_schema ILIKE 'information_%') AND TABLE_NAME ILIKE ('%' || trim('$SELECTION$') || '%') GROUP BY TABLE_NAME, table_schema;
Пример:
1. Создадим таблицу table1
CREATE TABLE table1( id serial PRIMARY KEY, name varchar(255), code varchar(20), datetime TIMESTAMP DEFAULT now());
2. Выделим название "table1" и выполним наш макрос
3. Результатом выполнения макроса в pgadmin будет следующая таблица
Тексты полученных шаблонов команд для таблицы будут следующие:
insert into public.table1(id,name,code,datetime) values()
update public.table1 set id= ,name= ,code= ,datetime where
delete from public.table1 where
truncate table public.table1 restart identity cascade
4. Далее можно скопировать текст нужного шаблона и использовать в написании sql-кода.
Благодаря макросу мы фактически получили тексты 5 основных шаблонных команд для работы с таблицей - select,insert,update,delete,truncate. Если таблица большая и содержит множество полей - это тем более полезно, не нужно выполнять дополнительные действия по уточнению наименований полей. Таким образом, этот макрос позволяет сократить время работы и увеличить производительность программиста.
Посмотреть работу макроса можно в следующем на примере по ссылке
Посмотреть работу макроса можно в следующем на примере по ссылке