For attributes that have corresponding inherit flags, the rules are as follows:
- If the inherit flag is not specified (NULL), and the value is specified, it is an error
- If the client is a root level client, and the inherit flag is true, it is an error
- If the inherit flag is set and the value is also set, the specified value is ignored (a warning is generated if the value does not match the existing inherited value)
- On update
- If inherit flag is NULL, current inherit flag and value are both left unchanged
- If inherit flag is 1, value is NULLed out
- If inherit flag is 0, value is set to specified value (even if NULL)
- On insert
- If inherit flag is NULL, inheritance is off and the specified value is set (even if NULL)
- If inherit flag is 1, inherit flag is set to 1 and the value is set to NULL
- If inherit flag is 0, inherit flag is set to 0 and the value is set to specified value (even if NULL)
- In cases, such as "address", where there are multiple fields governed by a single inheritance flag, all governed fields are taken to be a unit (e.g. on update, you cannot specify that the street should be left as is, but the city should be updated). If any aspect of the address needs to be updated, the entire address needs to be restated.