Как пропустить неправильные строки при вставке данных в базу данных - PullRequest
0 голосов
/ 11 мая 2010

У нас есть оператор., Который вставляет несколько строк во временную таблицу (скажем, например, 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 Ответ

2 голосов
/ 11 мая 2010

Реляционные базы данных работают не по строкам, а по наборам. Таким образом, каждый оператор вставки является инкапсулированной операцией: либо вся операция работает, либо вся вставка откатывается. Тем не менее, некоторые системы баз данных, в частности MS Access, позволяют пропускать строки, которые не проходят проверку. Однако за кулисами Access вставляет каждую строку по одной за раз вместо набора. Большинство интерфейсов СУБД не будут делать это, включая SQL Server. Если вы хотите пропустить строки, которые не прошли проверку, вам нужно отфильтровать их из вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...