MSSQL — ВСТАВКА В ЗНАЧЕНИЯ только в том случае, если все значения не являются нулевыми

#sql #sql-server #powershell

#sql #sql-сервер #powershell

Вопрос:

Поэтому у меня есть этот запрос

 "INSERT INTO tblAssetRelations (ParentAssetID, ChildAssetID, Type) VALUES (  (SELECT tblAssets.AssetID FROM tblAssets WHERE tblAssets.AssetName = $field2),  (SELECT tblAssets.AssetID FROM tblAssets WHERE tblAssets.AssetName = $field1),  12  );"  

как я могу отменить/прервать инструкцию INSERT, если одна из инструкций SELECT в ЗНАЧЕНИЯХ не возвращает значения(null)

ps: $field1 и $field2 являются переменными для сценария powershell

Ответ №1:

Вы можете попробовать использовать INSERT INTO ... SELECT оператор:

 INSERT INTO tblAssetRelations (ParentAssetID, ChildAssetID, Type) SELECT a, b, c FROM (  SELECT  (SELECT tblAssets.AssetID FROM tblAssets WHERE tblAssets.AssetName = $field2) AS a,  (SELECT tblAssets.AssetID FROM tblAssets WHERE tblAssets.AssetName = $field1) AS b,  12 AS c  ) WHERE a IS NOT NULL AND b IS NOT NULL  

Тогда вы бы прервали INSERT с WHERE a IS NOT NULL AND b IS NOT NULL