Aracılığıyla paylaş


gösterim planı işleç onaylama işlemi

The Assert işleç verifies a condition. Örneğin, başvuru bütünlüğünü doğrular veya skaler bir alt sorgu için bir satır döndüren sağlar.Giriş her satır için Assert Deyimde işleç değerlendirir Bağımsız değişken sütun yürütme planı.Bu ifade NULL olarak değerlendirilirse, satır aracılığıyla geçirilir Assert işleç ve sorgu yürütme devam eder. Bu ifade nonnull değerine değerlendirilirse, uygun hataya neden oldu.

The Assert işleç is a physical işleç.

Assert operator iconGrafik yürütme planı simgesi

Örnekler

C.Bir CHECK kısıtlaması doğrulanıyor

Aşağıdaki örnek değer güncelleştirir Gender bir belirtilen çalışan kimliği sütun Employee TABLO. Tablo sütununda 'F' değerlere izin verilen değerleri sınırlayan bir CHECK kısıtlaması vardır ve 'M '.Sorgu yürütme planı çıkışını sorgu iyileştiricisi kullandığını gösterir Assert değerini doğrulamak için işleç CHECK kısıtlaması karşı UPDATE deyiminde belirtilen ve değil kısıtlamayı koşulları karşılandığında bir hata oluşturur.

USE AdventureWorks;
GO
SET NOCOUNT ON;
GO
SET SHOWPLAN_ALL ON;
GO
UPDATE HumanResources.Employee
SET Gender = 'X' WHERE EmployeeID = 1;
GO
SET SHOWPLAN_ALL OFF;
GO

Yürütme planının çıktısını Assert işleç, aşağıda görülmektedir.

PhysicalOp 
-----------------------------------------------------------------------
Assert

Argument
-----------------------------------------------------------------------
WHERE:(CASE WHEN upper([AdventureWorks].[HumanResources].[Employee].[Gender])<>N'F' AND 
upper([AdventureWorks].[HumanResources].[Employee].[Gender])<>N'M' THEN 
    (0) ELSE NULL END)

b.Bir yabancı anahtar kısıtlaması doğrulanıyor

Aşağıdaki örnek, bir satırdan siler Person.Contact TABLO. Bu durumda olduğu bir yabancı anahtar başvurusu için altı tablonuz ContactID Bu tablodaki sütun. Sorgu yürütme planı çıkışını sorgu iyileştiricisi kullandığını gösterir Assert DELETE deyim bu kısıtlamaları karşı doğrulamak için işleç'ı tıklatın.

USE AdventureWorks;
GO
SET NOCOUNT ON;
go
SET SHOWPLAN_ALL ON;
GO
DELETE Person.Contact WHERE ContactID = 1209;
GO
SET SHOWPLAN_ALL OFF;
GO

Yürütme planının çıktısını Assert işleç, aşağıda görülmektedir.

PhysicalOp 
-----------------------------------------------------------------------
Assert

Argument
-----------------------------------------------------------------------
WHERE:(CASE WHEN NOT [Expr1030] IS NULL THEN (0) ELSE CASE WHEN NOT 
[Expr1031] IS NULL THEN (1) ELSE CASE WHEN NOT [Expr1032] IS NULL THEN 
(2) ELSE CASE WHEN NOT [Expr1033] IS NULL THEN (3) ELSE CASE WHEN NOT 
[Expr1034] IS NULL THEN (4) ELSE CASE WHEN NOT [Expr1035] IS NULL THEN (5) ELSE NULL END END END END END END)

c.skaler bir alt sorgu doğrulanıyor

Aşağıdaki örnek, bir alt sorgu sorgunun WHERE yan tümcesinde kullanır.Bu örnek, isteyerek zorlamak için birden çok satır döndüren alt sorgu kullanır Assert Hata artýrmak için işleç'ı tıklatın. alt sorgu yürütme planı çıkışını alt sorgu iyileştiricisi kullandığını gösterir Assert alt sorgunun SELECT deyiminde belirtilen yalnızca tek bir satır döndüren emin olmak için işleç'ı tıklatın.

USE AdventureWorks;
GO
SET NOCOUNT ON;
go
SET SHOWPLAN_ALL ON;
GO
SELECT EmployeeID 
FROM HumanResources.Employee
WHERE ContactID = (SELECT ContactID FROM Person.Contact);
GO
SET SHOWPLAN_ALL OFF;
GO
-- Run the query again to display the error message raised by the 
-- Assert Operator.
SELECT EmployeeID 
FROM HumanResources.Employee
WHERE ContactID = (SELECT ContactID FROM Person.Contact);
GO

Yürütme planının çıktısını Assert işleç, aşağıda görülmektedir.

PhysicalOp 
-----------------------------------------------------------------------
Assert

Argument
-----------------------------------------------------------------------
WHERE:(CASE WHEN [Expr1007]>(1) THEN (0) ELSE NULL END)