Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 在经典ASP和ADO中创建批处理更新_Sql Server 2008_Asp Classic_Ado_Batch Updates - Fatal编程技术网

Sql server 2008 在经典ASP和ADO中创建批处理更新

Sql server 2008 在经典ASP和ADO中创建批处理更新,sql-server-2008,asp-classic,ado,batch-updates,Sql Server 2008,Asp Classic,Ado,Batch Updates,我有一个ASP表单,它带来了一些我想要修改然后更新的记录。目前,更新是通过DLL一次更新一次,DLL只需构建一条SQL语句并为每条记录调用数据库 现在,我需要在SQL中进行检查,以确保没有从给定的建筑中删除最后一种类型的位置。这样,我有5个工作区,如果我试图将所有这些工作区都转换为办公室,我会得到一个错误,即每层至少需要一个工作区,SQL应该在不更新任何行的情况下结束。当前,它将更新每一行直到最后一行,然后抛出错误 有人向我指出,我应该尝试批处理SQL或更新作业,但我不知道该怎么做。有什么提示吗

我有一个ASP表单,它带来了一些我想要修改然后更新的记录。目前,更新是通过DLL一次更新一次,DLL只需构建一条SQL语句并为每条记录调用数据库

现在,我需要在SQL中进行检查,以确保没有从给定的建筑中删除最后一种类型的位置。这样,我有5个工作区,如果我试图将所有这些工作区都转换为办公室,我会得到一个错误,即每层至少需要一个工作区,SQL应该在不更新任何行的情况下结束。当前,它将更新每一行直到最后一行,然后抛出错误


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

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

类似(伪代码,未测试):

如果执行批处理,所有语句都将在事务中运行,如果出现错误,数据库将不会更新


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

您的意思是创建SQL事务以便在出现问题时允许回滚吗?你能更详细地描述一下这句话吗:“确保我没有从给定的建筑中删除最后一种类型的位置”?我试图通过事务锁定它,但它似乎不起作用。和中一样,当我尝试更新多个记录时,它会给我错误。我所说的话的意思是…我在一栋楼的一层里面有位置。他们有一种类型(工作场所、办公室、厨房等)。每个楼层必须至少有一个工作区,因此我必须限制用户进行更改,以删除楼层的最后一个工作区。如果他们试图进行大量更改并提交这些更改,而这些更改将删除最后一个工作区,我必须停止所有这些更改。
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);"