Удаление нескольких записей в одном запросе через XML CWP

Есть ли способ удалить несколько записей в одном запросе с помощью настраиваемой веб-публикации XML FileMaker Server?

Я просматриваю файл fms13_cwp_xml.pdf и вижу ссылки на команды -delete и -delete.related, но не вижу ничего, что позволило бы мне удалить несколько записей в текущей таблице одним запросом.

Я бы хотел избежать многократных запросов на удаление каждой записи по отдельности.

Я знаю, что могу написать сценарий, который выполнит поиск, который я хочу, и удалит все записи, но это означает, что часть бизнес-логики домена моего веб-приложения существует отдельно от самого приложения (т. Е. Не идеально).

Любые идеи?


person Chris Schmitz    schedule 24.08.2015    source источник


Ответы (3)


Вы можете комбинировать -script и -find в одном запросе, так что вы можете создать общий сценарий для удаления текущего найденного набора и использовать его с любым -find.

person Mikhail Edoshin    schedule 24.08.2015
comment
Это мой запасной план, если нет других вариантов. Я не хотел переносить бизнес-логику, необходимую для веб-приложения, в базу данных FileMaker, но если другого варианта нет, мне может понадобиться: / - person Chris Schmitz; 24.08.2015
comment
Общий сценарий «удалить все» - это не бизнес-логика, а просто служебная программа. - person Mikhail Edoshin; 25.08.2015
comment
Верно, но по крайней мере еще один разработчик в клиентском бизнесе будет иметь полный доступ к файлу FileMaker после моего развертывания. Я могу сказать ему, чтобы он не менял этот сценарий, но все же есть шанс, что кто-то новый может добавить, удалить или изменить сценарий таким образом, чтобы его назначение было другим. - person Chris Schmitz; 25.08.2015
comment
Этот разработчик также может прервать обработку множеством других способов (изменить или удалить поля, макеты, учетные записи, наборы привилегий и т. Д.). Вы все равно не можете контролировать все это. - person Mikhail Edoshin; 25.08.2015
comment
Совершенно верно. Я использую сценарий, это лучший вариант. Я просто надеялся, что в веб-приложении все будет предельно ясным и максимально ясным. Вызов скрипта из веб-приложения под названием Удалить найденный набор довольно понятен, но если бы можно было вызвать встроенную команду, которая делает то же самое, я бы предпочел это. Но да, сценарий - лучший вариант. Я также собираюсь создать отдельный файл FileMaker в качестве интерфейса веб-приложения для основного файла FileMaker. Это заставит меня чувствовать себя немного безопаснее, потому что я могу сказать, что клиент не меняет этот файл. - person Chris Schmitz; 25.08.2015

Вы можете создать запись для сеанса пользователя на основе IP-адреса или чего-то еще, для чего разрешено каскадное удаление. Установите соответствующие данные по мере необходимости и просто удалите запись сеанса и верните ее на место сразу после удаления. Просто будьте осторожны с каскадным удалением и тщательно протестируйте.

person SoliantMike    schedule 25.08.2015

Некоторые возможности:

  1. Вы можете настроить пользовательское отношение в FileMaker, в котором поле соединения левой таблицы содержит глобальное поле, а таблица справа - это таблица, из которой вы хотите удалить записи, а ее поле соединения является ее первичным ключом. Затем вы можете настроить левое глобальное поле, чтобы оно содержало список всех первичных ключей записей, которые вы хотите удалить. Затем вы можете передать все идентификаторы, которые хотите удалить, установить левое глобальное поле и использовать -delete.related для удаления всех записей за один шаг.

  2. (Обновлено: согласно приведенному ниже комментарию Михаила, правильный API для этого - xDBC API, а не XML API). Я верю (примерно на 95%, но не уверен), что вы можете использовать FileMaker SQL с XML API. Предполагая, что это правильно, вы можете просто выполнить стандартную команду SQL DELETE / FROM / WHERE…, чтобы удалить все записи за один шаг.

person brian_schick    schedule 24.08.2015
comment
То, что вы описываете 1, будет работать, хотя он все еще переносит бизнес-логику в базу данных FileMaker, чего я пытаюсь избежать. Но хорошая идея. Я попытался найти 2 в документации, но не нашел. Если бы он существовал, это был бы идеальный метод для сохранения бизнес-логики для веб-приложения в сети, но я не вижу, как это сделать: / - person Chris Schmitz; 24.08.2015
comment
Вы не можете выполнять SQL через XML API. - person Mikhail Edoshin; 25.08.2015
comment
Крис, чтобы замкнуть цикл на этом: в моем предварительном предложении №2 выше я думал об O / JDBC API, который действительно позволяет выполнять произвольный SQL. Если вам относительно легко получить к нему доступ из вашего веб-приложения, вы можете использовать произвольный SQL для ваших данных FileMaker. Это, конечно, позволит вам выполнить что-то вроде DELETE… FROM… WHERE, чтобы удалить произвольный набор записей одним махом… и сохранить всю бизнес-логику на соответствующем уровне вашего веб-кода. Вот ссылка: fmhelp.filemaker.com/docs/14/en/fm14_odbc_ide. pdf - person brian_schick; 26.08.2015