Skip to contents

Creates a secure PostgreSQL function that allows users to add new people to table_colnam without granting direct INSERT permissions on the table. This uses SECURITY DEFINER to execute with elevated privileges.

**For database administrators only.**

Usage

setup_add_person_function(con)

Arguments

con

Database connection (must have superuser or table owner privileges)

Value

TRUE if successful, FALSE otherwise

Details

This function creates: 1. A PostgreSQL function `add_person()` that validates and inserts new people 2. Grants EXECUTE permission on this function to PUBLIC (all users) 3. The function runs with SECURITY DEFINER (owner's privileges)

Users can then add people by calling: “`sql SELECT add_person('FirstName', 'LastName', 'Nationality', 'Institute', 'Contact'); “`

The function validates that: - First name and last name are provided and non-empty - The person doesn't already exist (based on full name)

Examples

if (FALSE) { # \dontrun{
# As database administrator:
con <- call.mydb()
setup_add_person_function(con)

# Users can then add people:
DBI::dbGetQuery(con, "
  SELECT add_person('John', 'Doe', 'USA', 'University', 'john.doe@example.com')
")
} # }