Это не простая задача, и она очень зависит от версии.
Вы можете попытаться заблокировать допустимую геометрию, или вы можете попытаться вставить неверную геометрию.
Например,эта линия создает недопустимую линию (2 точки, начало = конечная точка)
SELECT st_setsrid(st_geomfromtext('LINESTRING(480 270,480 270)'),3857);
ST_MakeValid
преобразует ее в точку.
или создает самопересекающийся многоугольник
SELECT st_isValid('polygon((0 0, 1 0, 0 1, 1 1, 0 0))'::geometry);
NOTICE: Self-intersection at or near point 0.5 0.5
st_isvalid
------------
f
ST_MakeValid
преобразует его в мультиполигон
Вы также можете найти другие примеры здесь