استفاده از RAISERROR در trigger
با سلام و خسته نباشید خدمت شما
من یک سئوال داشتم به کوئری زیر توجه کنید اگر بیشتر از 1 رکورد delete کنیم ارور می دهد و آن رکورد را delete نمی کند اما اگر 1 رکورد را delete کنیم دیگر ارور نمی دهد و آن رکورد را حذف می کند حالا سئوال من اینجا هست که وقتی متغیر count مساوی با 1 می شود ارور تولید نمی شود توسط RAISERROR و وقتی که متغیر count بزرگتر یا مساوی با 2 می شود دستور RAISERROR ارور تولید می کند چرا به این صورت هست آیا @@ROWCOUNT وقتی عددش بزرگتر از 2 می شود ارور تولید می شود توسط RAISERROR یعنی مثلا @@ROWCOUNT در ارورهای RAISERROR تعریف شده است که مثلا اگر عدد بزرگتر از 2 شد ارور تولید کند با 16,1 چون من RAISERROR را بر روی 11,1 می گذارم ارور تولید نمی کند می شود در این باره بیشتر به من توضیح دهید سپاسگزار می شوم.
alter TRIGGER delete1
ON dbo.EmployeeTriggerTest
FOR delete AS
BEGIN
DECLARE @Count int
SET @Count = @@ROWCOUNT;
IF @Count >= (SELECT SUM(row_count)
FROM sys.dm_db_partition_stats
WHERE OBJECT_ID = OBJECT_ID('dbo.EmployeeTriggerTest' )
AND index_id = 1)
BEGIN
RAISERROR('Cannot update all rows',16,1)
ROLLBACK TRANSACTION
RETURN;
END
END
GO
1 پاسخ
Severity 11 فقط یک Information است و جزء خطا ها حساب نمی شود. خطا از severity 16 و به بالا است.