DO $$
DECLARE
rec RECORD;
seq_name TEXT;
BEGIN
FOR rec IN
SELECT
c.table_schema,
c.table_name
FROM information_schema.columns c
JOIN information_schema.table_constraints tc
ON c.table_name = tc.table_name
AND c.table_schema = tc.table_schema
JOIN information_schema.constraint_column_usage ccu
ON tc.constraint_name = ccu.constraint_name
WHERE c.column_name = 'id'
AND tc.constraint_type = 'PRIMARY KEY'
AND c.column_default IS NULL
AND c.data_type IN ('integer', 'bigint')
AND c.table_schema = 'public'
LOOP
seq_name := rec.table_name || '_id_seq';
EXECUTE format('CREATE SEQUENCE IF NOT EXISTS %I START WITH 1 INCREMENT BY 1;', seq_name);
EXECUTE format('ALTER TABLE %I ALTER COLUMN id SET DEFAULT nextval(''%I'');', rec.table_name, seq_name);
END LOOP;
END $$;