Обновление данных (PATCH)

Как изменить существующую запись.

Перед началом работы настройте глобальные переменные %NOCODBURL%, %NOCODBTABLE% и %NOCODB_TOKEN%, как описано в статье Просмотр данных (GET).

Чем PATCH отличается от POST

МетодНазначение
POSTСоздание новой записи. Поле Id не указываете — его выдаёт NocoDB.
PATCHЧастичное обновление существующей записи. В теле запроса обязательно указывается Id строки, которую нужно изменить.

PATCH обновляет только те поля, которые вы передали в JSON. Остальные столбцы в строке остаются без изменений.

Формат запроса:

PATCH https://<вашдомен>/api/v2/tables/<идентификатортаблицы>/records

Откуда взять Id записи

Чтобы обновить строку, нужно знать её Id (целое число в NocoDB по умолчанию).

Варианты:

  1. Сохранить Id из ответа после POST в переменную сценария.
  2. Выполнить GET с фильтром (where) и взять Id из первой подходящей записи в %response_data%.
  3. Посмотреть Id в интерфейсе NocoDB или в Swagger после тестового GET.

Без корректного Id NocoDB не сможет понять, какую строку обновлять. Убедитесь, что Id — число (integer), а не строка в кавычках в логике SmartQuery, если тип поля в таблице — число.

Обновление одной записи

1. Блок "Выполнить SmartQuery"


%table% = "Database"

%url% = (
    %NOCODB_URL% 
    + %NOCODB_TABLE%[%table%] 
    + "/records"
    )

# Id строки — из GET или после POST
%record_id_to_patch% = 6

%req_body% = [
    {
        "Id": %record_id_to_patch%,
        "First_name": "Александр",
        "Phone_number": "79992345678"
    }
]

2. Блок "Отправить HTTP-запрос"

  • URL: %url%
  • Метод: PATCH
  • Тело запроса: тип "Текст": {{ %req_body% | to_json }}
  • Заголовки:
КлючЗначение
acceptapplication/json
xc-token%NOCODB_TOKEN%
content-typeapplication/json
  • Ответ — в переменную типа "Словарь" (или массив, если ваш сценарий так настроен).
  • Статус — в переменную типа "Число".

3. Ожидаемый результат

При успехе придет статус 200, а значение строки изменится.

Таблица до изменения:

После:

Обновление нескольких записей за один запрос

В %req_body% передайте массив объектов — у каждого должен быть свой Id и набор полей для изменения.


%table% = "Database"

%url% = (
    %NOCODB_URL% 
    + %NOCODB_TABLE%[%table%] 
    + "/records"
    )

%req_body% = [
    { "Id": 5, "City": "Рязань" },
    { "Id": 6, "City": "Пермь", "Last_name": "Иванов" }
]

Поля, которые нельзя менять через PATCH

Следующие типы полей в NocoDB присваиваются автоматически и доступны только для чтения. Их передача в теле запроса может быть проигнорирована или привести к ошибке:

  • Created At
  • Updated At
  • Id

Если PATCH возвращает ошибку, проверьте, не пытаетесь ли вы записать в такое поле.