Aracılığıyla paylaş


Showplan işleç onaylama

The Assert operator verifies a condition.Örneğin, başvuru doğrular bütünlük veya skaler alt sorgu bir satır döndürür sağlar.Giriş her satır için Assert işleç değerlendirir ifade bağımsız değişkeni sütun yürütme planı.Bu ifade null olarak değerlendirilirse, satır üzerinden geçirilen Assert işleç ve sorgu yürütme devam.Bu ifade için null olmayan bir değer değerlendirilir, uygun hata ortaya çıktı.

The Assert operator is a physical operator.

Onayla işleci simgesiGrafik yürütme planı simgesi

Örnekler

A.Denetim kısıtlaması doğrulanıyor

Aşağıdaki örnek değer güncelleştirmeleri Gender bir belirtilen çalışan kimliği sütunu Employee tablo.Tablo sütun değerleri 'f' olarak izin verilen değerleri sınırlayan bir denetim kısıtlaması vardır. ve ediyorum '.Sorgu yürütme planı çıktı sorgu iyileştiricisi kullandığını gösterir Assert GÜNCELLEŞTİRMEDE belirtilen değeri doğrulamak için operatör deyim check kısıtlaması karşı kısıtlaması koşulları met. olmadığında bir hata yükseltir ve

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

Yürütme planı çıktı, Assert işleç belirinceye altında.

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

Argument
-----------------------------------------------------------------------
WHERE:(CASE WHEN upper([AdventureWorks2008R2].[HumanResources].[Employee].[Gender])<>N'F' AND 
upper([AdventureWorks2008R2].[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.Person tablo.Bu durumda olan altı tablonuz bir yabancı anahtar için başvuru BusinessEntityID sütununda bu tablo.Sorgu yürütme planı çıktı sorgu iyileştiricisi kullandığını gösterir Assert işleç delete deyim her biri karşı doğrulamak içinbu kısıtlamalar.

USE AdventureWorks2008R2;
GO
SET NOCOUNT ON;
go
SET SHOWPLAN_ALL ON;
GO
DELETE Person.Person WHERE BusinessEntityID = 1209;
GO
SET SHOWPLAN_ALL OFF;
GO

Yürütme planı çıktı, Assert işleç belirinceye altında.

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 alt sorgu doğrulama

Aşağıdaki örnek, sorgunun where yan tümce tümce tümce alt sorgu kullanır.Bu örnek isteyerek zorlamak için birden çok satır döndüren bir alt alt sorgu kullanır Assert işleç bir hata yükseltmek için.alt alt sorgu yürütme planı çıktı alt alt sorgu iyileştiricisi kullandığını gösterir Assert , alt sorgunun select belirtilen emin olmak için operatör deyim yalnızca tek bir satır. döner

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

Yürütme planı çıktı, Assert işleç belirinceye altında.

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

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