Операция Modify
Операция Modify позволяет клиенту запросить модификацию записи на сервере. Запрос Modify определяется следующим образом:
ModifyRequest ::= [APPLICATION 6] SEQUENCE { object LDAPDN, modification SEQUENCE OF SEQUENCE { operation ENUMERATED { add (0), delete (1), replace (2) }, modification AttributeTypeAndValues } } AttributeTypeAndValues ::= SEQUENCE { type AttributeDescription, vals SET OF AttributeValue }
Перечислим параметры запроса Modify:
- Object: модифицируемый объект. Значение данного поля содержит DN модифицируемой записи. Сервер не рассматривает никаких alias для определения модифицируемой записи.
- Modification: список модификаций, выполняемых для записи. Весь список модификаций записи должен быть выполнен в том порядке, в котором он перечислен, как одна атомарная операция. Хотя отдельные модификации могут нарушать схему Каталога, результирующая запись, после того как весь список модификаций выполнен, должна соответствовать требованиям схемы Каталога. Значения, которые могут находиться в поле "operation" для каждой модификации, имеют следующую семантику:
- Add: добавление перечисленных значений для данного атрибута; при необходимости атрибут создается.
- Delete: удаление перечисленных значений для данного атрибута; весь атрибут удаляется, если никаких значений не указано или все текущие значения атрибута перечислены для удаления.
- Replace: замена всех существующих значений данного атрибута новыми перечисленными значениями; если атрибута не существует, он создается. Замена без указания значения удаляет весь атрибут, если он есть, и игнорируется, если атрибута не существует.
Результат модификации, которую пытался выполнить сервер при получении ModifyRequest, возвращается в ModifyResponse, который определяется следующим образом:
ModifyResponse ::= [APPLICATION 7] LDAPResult
При получении ModifyRequest сервер выполняет необходимые модификации в DIT.
Сервер возвращает клиенту единственный ModifyResponse, указывающий либо на успешное завершение модификации DIT, либо на причину неудачного завершения. Заметим, что при требовании атомарности применения списка модификаций в ModifyRequest клиент может считать, что ни одна модификация DIT не выполнена, если полученный ModifyResponse указывает на какую-либо ошибку, и что все запрошенные модификации прошли удачно, если ModifyResponse указывает на успешное завершение операции модификации.
Операция Modify не может быть использована для удаления из записи любого полного уникального имени и тех значений, которые формируют относительное уникальное имя записи. Попытка сделать это приведет к тому, что сервер вернет ошибку notAllowedOnRDN. Для переименования записи используется операция ModifyDN, которая будет описана ниже.