我们有一个声明。,即在临时表中插入一些行(例如,10行),而插入第5行时,它有一个列格式的问题并给出错误然后它停止插入行。 我想要的是,它应该跳过错误行并插入有效行。 对于那些错误行,它可以跳过该错误列并插入一些空值&不同的地位。
create table #tb_pagecontent_value (pageid int,formid uniqueidentifier, id_field xml,fieldvalue xml,label_final xml)
…
…
insert into #tb_pagecontent_xml
select A.pageid,B.formid,A.PageData.query('/CPageDataXML/control')
from Pagedata A inner join page B on A.PageId=B.PageId
inner join FormAssociation C on B.FormId=C.FormId
where B.pageid in (select pageId from jobs where jobtype='zba' and StatusFlag!=1)
在上面例如,我想应用那个逻辑。 任何帮助表示赞赏。
答案 0 :(得分:2)
关系数据库不是逐行工作,而是按集合工作。因此,每个insert语句都是一个封装操作:整个操作或整个插入回滚。也就是说,一些数据库系统,特别是MS Access,将允许忽略验证失败的行。但是,在幕后,Access一次插入一行而不是一组。大多数DBMS接口都不会这样做,包括SQL Server。如果要跳过验证失败的行,则需要将其从插入中过滤掉。