The Custom Binding Parameters data is supposed to be unique per binding, so each binding can specify its own values for the same keys. The table must be editable for each binding, and values must only be included in the binding(s) in which they are defined.
My observations while editing an environment.xml file with one ESP specifying two service bindings are as follows:
The Custom Binding Parameters table for binding 1 can be edited at any time.
The Custom Binding Parameters table for binding 2 cannot be edited when the corresponding table for binding 1 is empty. If the corresponding table for binding 1 has at least one row, binding 2's table can be edited. A 'failed' attempt to add a row to binding 2's table followed by adding a row to binding 1's table will make the added row in binding 2 visible and editable, as well as enable the addition and deletion of other rows.
My observations while starting the service with different table configurations are as follows:
If the table for binding 1 contains data and the table for binding 2 is empty (or contains empty keys and values), the binding 1 data is applied to both bindings in the esp.xml file.
If binding 1 and binding 2 both contain data, the data appears to be applied correctly.