Создание пакетного обновления в классическом ASP и ADO - PullRequest
1 голос
/ 20 августа 2010

У меня есть форма ASP, в которой содержится ряд записей, которые я хочу изменить, а затем обновить.В настоящее время обновления выполняются как одноразовые обновления с помощью DLL, которые просто создают оператор SQL и вызывают базу данных для каждой записи.

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

Кто-то указал мне, что я должен попытаться выполнить пакетную обработку SQL или обновления, но я не знаю, как ядолжен идти об этом.Любые намеки, пожалуйста?

1 Ответ

0 голосов
/ 20 августа 2010

Вы можете объединить несколько команд и выдать ошибку в случае сбоя некоторых бизнес-правил

Что-то вроде (псевдокод не проверен):

For i = 0 to ubound(Items) - 1
  stmt = stmt + " UPDATE BuildingFloor set Type=" + Items(i).Type + " WHERE ID=" + Items(i).ID + ";"
next
stmt = stmt + " IF NOT EXISTS(SELECT * FROM BuildingFloor"
stmt = stmt + " WHERE Type = 'WorkPlace') RAISERROR ('Must have a workplace', 16, 1);"

Если вы выполните пакет, всепредложения будут выполняться внутри транзакции, и БД не будет обновляться при возникновении ошибки.

Отказ от ответственности : просто идея, а не проверка.

...