SQL Server 2005 引入 CLR 整合,允許使用 C#、VB.NET 等現代面向對象語言編寫資料庫物件 (存儲過程、觸發器、用戶定義函數等)。本文逐步演示如何建立、部署、測試 C# 托管觸發器。


Trigger1.cs。

using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public partial class Triggers
{
// 目標表 Person,事件 FOR UPDATE
[Microsoft.SqlServer.Server.SqlTrigger(Name="Trigger1", Target="Person", Event="FOR UPDATE")]
public static void Trigger1()
{
// 發送訊息到客戶端 (如 SSMS 輸出視窗)
SqlContext.Pipe.Send("Trigger FIRED");
}
}
注意: 確保資料庫中存在 Person 表,或修改 Target 為實際表名。

在 SSMS 執行:
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
對 Person 表執行 UPDATE 語句,即可在「訊息」頁籤看到 Trigger FIRED 輸出。

托管觸發器將複雜業務邏輯從 T-SQL 移至 C#,利用 .NET 框架優勢 (OOP、異常處理、外部資源訪問) 增強資料庫可程式性。