Для обновления типа данных поля row_num с varchar(10) на int и установления его как обязательное для всех таблиц базы данных можно использовать следующий скрипт:
```sql
-- Обновление типа данных поля row_num на int
ALTER TABLE table_name
ALTER COLUMN row_num TYPE INTEGER
;
-- Установление NOT NULL для поля row_num
ALTER TABLE table_name
ALTER COLUMN row_num SET NOT NULL
;
```
Для написания цикла на Postgresql с использованием SQL для изменения типа данных в каждой таблице на целочисленный (integer) и при необходимости изменения на NOT NULL, можно использовать следующий скрипт:
```sql
DO $$
DECLARE
table_name text;
column_name text;
BEGIN
FOR table_name, column_name IN
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'public' -- Укажите схему, в которой находятся таблицы
AND data_type = 'character varying' -- Укажите текущий тип данных
LOOP
-- Обновление типа данных на integer
EXECUTE format('ALTER TABLE %I ALTER COLUMN %I TYPE INTEGER', table_name, column_name);
-- Установление NOT NULL, если содержится значение NULL
EXECUTE format('ALTER TABLE %I ALTER COLUMN %I SET NOT NULL', table_name, column_name);
END LOOP;
END $$;
```
Этот скрипт будет перебирать все таблицы в указанной схеме и изменять тип данных всех столбцов с типом character varying на integer, а также устанавливать NOT NULL, если в столбце содержится значение NULL.