sqlserver調試觸發器
① sql SERVER如何應用DLL觸發器
1、首先打開SQL SERVER 2008資料庫管理工具,然後選擇伺服器,選擇Windows身份驗證進行連接,如下圖所示
2、進入管理工具以後,定位要操作的資料庫,然後點擊新建查詢,如下圖所示
3、在新建查詢界面中,通過create trigger語句創建DLL觸發器,當進行資料庫刪除和修改的時候進行觸發,如下圖所示
4、語句編寫好了以後,點擊工具欄中的執行命令,如果消息中顯示命令已成功完成則創建成功,如下圖所示
5、然後我們打開資料庫觸發器文件夾,你就會看到你所創建的觸發器名稱,如下圖所示
6、接下來我們演示觸發器的作用,在查詢界面中我們通過drop語句刪除一個資料庫,執行後出現如下的提示,這就是我們觸發器的提示,如下圖所示
7、然後我們在來看看資料庫列表中所刪除的資料庫是否還存在,如下圖所示,資料庫沒有刪除,說明觸發器已經把操作回滾了
工具/材料
SQL
SERVER
2008
② sql2008 怎麼調試觸發器
在項目中,單擊右鍵選擇"添加"->"觸發器",代碼如下(validateyear.cs):
using
system;
using
system.data;
using
system.data.sqlclient;
using
microsoft.sqlserver.server;
public
partial
class
triggers
{
//
為目標輸入現有表或視圖並取消對特性行的注釋
[microsoft.sqlserver.server.sqltrigger
(name="validateyear",
target="humanresources",
event="for
insert")]
public
static
void
validateyear()
{
//
用您的代碼替換
sqlconnection
conn
=
new
sqlconnection("context
connection=true");
//定義查詢
string
sql
=
"select
count(*)
"
+
"from
inserted
"
+
"where
year(modifieddate)<>2012";
sqlcommand
comm
=
new
sqlcommand(sql,
conn);
//打開連接
conn.open();
//獲得行數
int
numbadrows
=
(int)comm.executescalar();
if
(numbadrows
>
0)
{
//get
the
sqlpipe
sqlpipe
pipe
=
sqlcontext.pipe;
//role
back
and
raise
an
error
comm.commandtext
=
"raiseerror('修改錯誤',11,1)";
//send
the
error
try
{
}
catch
{
}
system.transactions.transaction.current.rollback();
}
conn.close();
}
}
用於驗證插入的數據是否合法,當插入表humanresources是,如果修改日期的年份不是2012將報錯。
另外要注意的是要使用system.transactions.transaction.current.rollback(),必須添加system.transactions的引用