SQL Server: обнуляет все столбцы, которые допускают нулевые значения - PullRequest
0 голосов
/ 13 ноября 2018

Наша база данных работает на 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

Я просто не знаю, как их объединить.

...