如何在将数据插入数据库时​​跳过无效行

时间:2010-05-11 04:19:50

标签: sql tsql

我们有一个声明。,即在临时表中插入一些行(例如,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)

在上面例如,我想应用那个逻辑。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

关系数据库不是逐行工作,而是按集合工作。因此,每个insert语句都是一个封装操作:整个操作或整个插入回滚。也就是说,一些数据库系统,特别是MS Access,将允许忽略验证失败的行。但是,在幕后,Access一次插入一行而不是一组。大多数DBMS接口都不会这样做,包括SQL Server。如果要跳过验证失败的行,则需要将其从插入中过滤掉。