I wonder whether a view calling a set returning function would be a viable option. Within the function you execute the actual query twice. Once to merge selected pk into a protocol table and once for the return of the data set.
The view would be sucking in the entire table every time . Maybe not a big deal as this is a very tiny table.
I think Joe wins this thread with the RLS idea however.