Implementation of row level security can be complicated compared to standard discretionary access controls. Before you commit to using row level security, determine whether or not you can meet access control needs by more conventional means, for example:
- Grant user access to views that do not include columns with sensitive data, instead of granting user privileges on the entire base table.
- Grant or revoke access privileges only on selected columns in the base table.
When comparing access control methods, consider that view and column level access controls:
- Are usually adequate for controlling SELECT statements, but users cannot execute INSERT, UPDATE, and DELETE statements on columns they cannot see, and must revert to accessing the base tables for these operations.
- Are discretionary, that is, the object owner can grant access to any user.