Метод DeleteRow удаляет строку из выбранной таблицы. Это эквивалентно SQL-запросу DELETE.

С этим методом необходимо работать очень осторожно, чтобы не потерять данные. Удаление нескольких строк отключено, чтобы избежать случайного удаления всех записей.

Этот метод может быть удобен, когда необходимо удалить дополнительные данные при отправке письма. Например, это может быть список подписчиков, не получивших никаких предложений, либо лист уникальных предложений, которые не могут быть отправлены дважды, и т.д.

Сигнатура метода

DeleteRow(table, filters)

Параметры метода

Параметр Тип Описание
table string Обязательное. Название таблицы.
filters array of Filter objects Необязательное. Массив объектов, задающих параметры раздела WHERE запроса SELECT. Используйте этот параметр, чтобы ограничить выбранные записи теми, что подходят вашим критериям. Если фильтров не задано, критерии не будут применены. Если задано несколько фильтров, возвращенные записи будут соответствовать всем критериям (как при применении логического AND).

Параметры объекта Filter

Параметр Тип Описание
Name string Column name
Modifier enumeration Модификатор операции. Может быть следующим:
  • EQ (равно, "=")
  • GT (больше чем, ">")
  • GE (больше или равно, ">=")
  • LT (меньше чем, "<")
  • LE (меньше или равно, "<=")
  • LIKE (SQL LIKE оператор)
  • NE (не равно, "<>")
Value object Значение столбца. Тип значения зависит от типа столбца. Например, когда происходит фильтрация по номеру столбца, должен использоваться тип integer, для текстовых столбцов - string и т.д. Также возможны простые преобразования типов. Например, string "123" отображает правильное целое integer значение 123. Это работает для дат, чисел с плавающей запятой и т.д..

Фильтры работают так же, как в методе GetRows. Более подробную информацию можно найти документации по методу GetRows..

2. Примеры использования

Можно вызвать метод UpdateRow, используя синтаксис с фигурными скобками. Вы можете разместить этот метод в любом месте письма, так как он возвращает пустую строку.

Пример 1 - простейший вызов:

${DeleteRow('MyTable')}

Это эквивалентно SQL-запросу:

DELETE TOP(1) FROM MyTable

Однако данный способ используется редко, т.к. в большинстве случаев существует необходимость удалить отдельную строку, а не первую найденную. Последующие примеры показывают, как это осуществить, используя фильтры.

Пример 2 - удаление строки, соответствующей заданным критериям:

${DeleteRow('MyTable', new [] {new Filter('CustomerId', EQ, 123)})}

Это эквивалентно SQL-запросу:

DELETE TOP(1) FROM MyTable WHERE CustomerId = 123

Пример 3 - использование нескольких фильтров:

${DeleteRow('MyTable', new [] {new Filter('CustomerId', EQ, 123), new Filter('MyColumn', EQ, 456)})}

Это эквивалентно SQL-запросу:

DELETE TOP(1) FROM MyTable WHERE CustomerId = 123 AND MyColumn = 456

Также возможно (а в большинстве случаев необходимо) сравнить обновляемые строки с полями подписчика, email и т.д. Для дополнительной информации смотрите примеры метода GetRows.

Пример 4 - реальный пример отправки одноразовых купонов:

<!-- get coupon for customer and store in a variable -->
<var rows="GetRows('Coupons', 1, null, new [] {new Filter('CustomerId', EQ, SubscriberProperty('customer_id'))})"/>

<!-- display coupon code in email -->
<p>Hello! Here's your coupon: ${rows[0]['CouponCode']}</p>

<!-- delete the coupon so it cannot be used again -->
${DeleteRow('Coupons', new [] {new Filter('CouponId', EQ, rows[0]['CouponId'])})}