Row-level triggers in Supabase run automatically when a row is inserted, updated, or deleted in a table. The trigger calls a function that records the change details into an audit log table. For inserts and updates, the new row data is available as NEW, while for deletes, the old row data is available as OLD. The function inserts a record with the table name, operation type, changed data, and timestamp. It must return NEW or OLD to allow the database operation to complete. This setup helps keep a history of changes for auditing purposes.