+1 to read only, fortunately databases are very good at enforcing this thing, unfortunately the users of databases generally less so.
RE: circumventing the blacklist, I think immediately of accessing a function with postgresql aka select my_destructive_function();