1

我有一个 ASP 表单,其中包含一些我想要修改然后更新的记录。目前,更新通过 DLL 进行一次一次更新,该 DLL 只需构建一条 SQL 语句并为每条记录调用数据库。

现在,我需要在 SQL 中进行检查,以确保我没有摆脱给定建筑物的最后一种类型的位置。这样我有 5 个工作场所,如果我试图将所有这些工作场所变成办公室,我应该会收到一条错误消息,说我每层至少需要一个工作场所,并且 SQL 应该结束而不更新任何行。目前,它会更新每一行直到最后一行,然后抛出错误。

有人向我指出,我应该尝试批量处理 SQL 或更新,但我不知道该怎么做。请问有什么提示吗?

4

1 回答 1

0

如果某些业务规则失败,您可以链接多个命令并引发错误

类似的东西(伪代码,未经测试):

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);"

如果您执行批处理,则所有语句都将在事务中运行,并且如果引发错误,数据库将不会更新。

免责声明:只是一个想法,未经测试。

于 2010-08-20T16:31:45.387 回答