10 октября 2022 СуБД awk


for t in $(echo \\dt | psql $BASE |grep public |awk '{print $3}'); do 
    echo "SELECT setval('$t"_id_seq"', (select max(id)+1 from $t), true);"; 
done | psql $BASE

Суть проблемы в том, что при репиликации таблицы значение последовательности таблицы автоматически не меняется, по этому после отключения репликации значение last_insert_id будет отставать от реального количество записей в таблице



#5 2023-10-05 13:39:44

гость

А можно и в одну строчку echo \\dt | psql $BASE |grep public |awk '{print "SELECT setval(\x27"$3"_id_seq\x27, (select max(id)+1 from "$3"), true);"}' | psql $BASE