Наша база данных работает на SQL Server 2012. Я хотел бы исключить некоторые нежелательные данные, а не просто удалить строку. Я не могу обнулить все столбцы в таблице, потому что некоторые определили "не нуль". Таким образом, вместо того, чтобы вручную указывать все столбцы по имени, которые допускают нулевые значения в моем операторе обновления, я надеялся найти способ либо автоматически фильтровать его, либо пытаться / ловить, основываясь на том, является ли он обнуляемым или из-за каких-либо ошибок. Таким образом, я могу использовать это на любом столе. Есть идеи?
Я вижу, что sys.columns
имеет столбец is_nullable
и is_computed
, к которому я могу обратиться, я просто не знаю, как обернуть все это вместе в своем операторе обновления, чтобы сказать "Обнулить любой столбец в этом таблица, которая допускает нули ".
Редактировать: например, я тестировал базу данных AdventureWorks2014
. Я могу выполнить запрос ниже, чтобы увидеть, какие столбцы допускают значения NULL и не вычисляются:
select name as 'column'
from sys.columns
where is_nullable = 1
and is_computed = 0
and object_id = OBJECT_ID('HumanResources.Employee')
Кроме того, я могу выполнить следующий запрос, чтобы обнулить некоторые столбцы, которые я указал вручную:
update [AdventureWorks2014].[HumanResources].[Employee]
set OrganizationNode = NULL
Я просто не знаю, как их объединить.