Some global sql queries - focustm/focust GitHub Wiki

See:

  1. https://chat.openai.com/share/d4b5a75f-889a-4a0d-92e8-f0e69cfe7798

Rename table

ALTER TABLE old_table_name RENAME TO new_table_name;

Rename index

ALTER INDEX old_index_name RENAME TO new_index_name;

Drop NOT NULL statement

ALTER TABLE employees_apps_times
ALTER COLUMN app_full_id DROP NOT NULL;

Rename columns

ALTER TABLE app_full RENAME COLUMN app_image_path TO image_path;
ALTER TABLE app_full RENAME COLUMN app_main_wnd_text TO main_wnd_text;
ALTER TABLE app_full RENAME COLUMN app_url TO url;

Deallocate all prepared queries

DEALLOCATE ALL;

Remove a trigger from the DB

DROP TRIGGER trigger_on_before_insert_employee_times ON employee_times;

list all triggers in the DB

SELECT
  n.nspname AS schema_name,
  c.relname AS table_name,
  t.tgname AS trigger_name,
  CASE t.tgtype::integer & 66
    WHEN 2 THEN 'BEFORE'
    WHEN 64 THEN 'INSTEAD OF'
    ELSE 'AFTER'
  END as trigger_timing,
  CASE
    WHEN (t.tgtype::integer & 4) = 4 THEN 'INSERT'
    WHEN (t.tgtype::integer & 8) = 8 THEN 'DELETE'
    WHEN (t.tgtype::integer & 16) = 16 THEN 'UPDATE'
  END as trigger_event,
  pg_get_triggerdef(t.oid) as trigger_definition
FROM pg_trigger t
JOIN pg_class c ON c.oid = t.tgrelid
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE t.tgenabled = 'O' AND NOT t.tgisinternal;

Remove a function from the DB

DROP FUNCTION IF EXISTS check_employee_time_insertion();

or

DROP FUNCTION any_other_function_name(argument_type [, ...]);  -- IF EXISTS can be skipped, arguments should be provided

List all functions in the DB

SELECT
  n.nspname AS schema_name,
  p.proname AS function_name,
  pg_get_function_arguments(p.oid) AS function_arguments,
  pg_get_function_result(p.oid) AS result_type
FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
AND p.prokind = 'f'
ORDER BY n.nspname, p.proname;

or

SELECT
  n.nspname AS schema_name,
  p.proname AS function_name,
  pg_get_function_arguments(p.oid) AS function_arguments,
  pg_get_function_result(p.oid) AS result_type,
  pg_get_functiondef(p.oid) AS source_code -- Retrieves the function definition/source code
FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
AND p.prokind = 'f'
ORDER BY n.nspname, p.proname;

Display the content of the interested function

SELECT pg_get_functiondef(f.oid)
FROM pg_proc f
JOIN pg_namespace n ON (f.pronamespace = n.oid)
WHERE n.nspname = 'public' -- Replace 'schema_name' with your schema name
  AND f.proname = 'check_employee_time_insertion'; -- Replace 'function_name' with your function name

Example: Dropping Multiple Columns from a table

ALTER TABLE table_name DROP COLUMN column_name1, DROP COLUMN column_name2;

Adding column to the existing table

ALTER TABLE table_name ADD COLUMN column_name data_type;