CREATE TABLE foo ( key BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, data JSONB NOT NULL ); CREATE FUNCTION delete_data() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN DELETE FROM test WHERE key <= NEW.data->>'index'; RETURN NEW; END $$;