But why would you use a value list at all if you have a script inserting the value? The presence of a value list would have no effect on how this script functions from what you have so far described.
If [ Table::Region = "North" ]
Set Field [Table::teacher ; "John" ]
But there are many details missing from your question and a number of them could keep the above script from working correctly.