触发器不是这么玩的,看看联机丛书上的定义吧,不要什么东西都用触发器来做。在这样的情况,建议是在客户端做的,无论是@@rowcount 还是 count(*), 都可以简单的完成你的东西

解决方案 »

  1.   

    CREATE TRIGGER MyDelTrigger
    ON Item
    FOR DELETE 
    AS
    BEGIN
    DECLARE @count int
    SELECT @count=Count(*) FROM DELETED
    IF @count=0 
    BEGIN
    raiserror('沒有刪除任何數據.',-1,-1)
    ENDEND
      

  2.   

    错误不能传到前台是因为RaisError的错误层级设得太低!
    具体该设多少,我不太清楚,你看一下帮助,测试一下就应该知道了!RAISERROR錯誤訊息重要性層級
    錯誤訊息的重要性層級可指出 Microsoft® SQL Server™ 2000 遭遇到的問題類型。重要性層級 10 的訊息是指出您輸入的錯誤資訊所引起的問題資訊。重要性層級 11 至 16 是由使用者產生,並可由使用者更正。重要性層級 17 至 25 指出軟體或硬體的錯誤。在遇到產生錯誤重要性層級 17 以上的問題時,應該通知系統管理員。系統管理員必須解決這些錯誤,並追蹤其發生頻率。在發生重要性層級 17、18 或 19 的錯誤時,雖然可能無法執行特殊陳述式,但還可以繼續工作。 系統管理員應該監控產生重要性層級 17 至 25 的所有問題,然後列印包含錯誤回溯資訊的錯誤記錄。若問題會影響整個資料庫,則可以使用 DBCC CHECKDB (資料庫) 來確定損害的程度。DBCC 可識別必須移除的部份物件,並可選擇性地修復損害。若損害範圍極廣,則可能必須還原資料庫。 在使用 RAISERROR 指定使用者自訂的錯誤訊息時,請使用大於 50,000 的錯誤訊息代碼和 0 至 18 的重要性層級。只有系統管理員可以發出重要性層級介於 19 與 25 之間的 RAISERROR。重要性層級 0 至 19
    重要性層級 10 的錯誤訊息屬於資訊性訊息。重要性層級 11 至 16 的錯誤訊息由使用者產生,並可由使用者更正。重要性層級 17 與 18 由資源或系統錯誤所產生,且使用者的工作階段不會中斷。使用 sp_addmessage 可以將重要性層級 1 至 25 的使用者自訂訊息加入 sysmessages 中。只有系統管理員可以加入重要性層級介於 19 與 25 之間的訊息。重要性層級 17 以上的錯誤訊息應該向系統管理員報告。重要性層級 10:狀態資訊這是資訊訊息,指出使用者輸入的錯誤資訊所引起的問題。在 SQL Server 中看不到重要性層級 0。重要性層級 11 至 16這些訊息指出可由使用者更正的錯誤。重要性層級 17:資源不足這些訊息指出陳述式使 SQL Server 用盡資源 (例如資料庫鎖定或磁碟空間),或超出系統管理員所設定的一些限制。重要性層級 18:偵測到非嚴重的內部錯誤這些訊息指出發生某種內部軟體問題,但該陳述式已完成,且仍維持至 SQL Server的連線。例如,當 SQL Server 查詢處理器在查詢最佳化時偵測到內部錯誤,會出現重要性層級 18 的訊息。每次出現重要性層級 18 的訊息時,都要通知系統管理員。重要性層級 19:資源中的 SQL Server 錯誤這些訊息指出已經踰越部份無法設定的內部限制,目前的批次處理已經終止。重要性層級 19 的錯誤很少發生,不過,必須由系統管理員或主要支援提供者來更正。每次出現重要性層級 19 的訊息時,都要通知系統管理員。重要性層級 20 至 25
    重要性層級 20 至 25 指出系統問題。這些都是嚴重的錯誤,表示該處理序 (完成陳述式中指定工作的程式碼) 已不再執行。在停止之前處理序已先遭到凍結,記錄發生事件的相關資訊,然後才終止。SQL Server 的用戶端連線會關閉,且用戶端可能無法重新連線,視問題類型而定。 重要性層級大於 19 的錯誤訊息會停止目前的批次工作。重要性層級大於 20 的錯誤訊息可視為嚴重錯誤,同時終止用戶端連線。此範圍內的錯誤訊息可能會影響資料庫中所有的處理序,並可能表示該資料庫或物件已經損壞。重要性層級 19 至 25 的錯誤訊息會寫入錯誤記錄中。重要性層級 20:目前處理序中的 SQL Server 嚴重錯誤這些訊息指出陳述式遇到問題。由於問題只影響目前的處理序,因此資料庫本身不太可能受損。重要性層級 21:資料庫 (dbid) 處理序中的 SQL Server 嚴重錯誤這些訊息指出您遭遇的問題將影響目前資料庫中所有的處理序,但資料庫本身不太可能受損。重要性層級 22:SQL Server 嚴重錯誤資料表整合性可疑這些訊息指出訊息中指定的資料表或索引已經遭軟體或硬體問題損壞。很少發生重要性層級 22 的錯誤,不過,若是遇到此錯誤,請執行 DBCC CHECKDB,以判定資料庫中其他物件是否也受損。問題很可能只在快取記憶體中,並非磁碟本身發生問題。若是如此,請重新啟動 SQL Server 以更正此問題。若要繼續工作,您必須重新連線至 SQL Server。否則,請使用 DBCC 來修復問題。在某些狀況下,可能必須還原資料庫。如果重新啟動仍無法解決問題,則問題可能發生於磁碟上。有時候銷毀錯誤訊息中指定的物件可以解決此問題。例如,如果訊息說明 SQL Server 在非叢集索引中,發現長度為 0 的資料列,請刪除此索引,然後重建索引。 重要性層級 23:SQL Server 嚴重錯誤:資料庫整合性可疑這些訊息指出整個資料庫的整合性有問題,此乃硬體或軟體問題所致。很少發生重要性層級 23 的錯誤,不過,若是遇到此錯誤,請執行 DBCC CHECKDB 以判定受損範圍。問題很可能只在快取記憶體中,並非磁碟本身發生問題。若是如此,請重新啟動 SQL Server 以更正此問題。若要繼續工作,您必須重新連線至 SQL Server。否則,請使用 DBCC 來修復問題。在某些狀況下,可能必須還原資料庫。重要性層級 24:硬體錯誤這些訊息指出部份類型的媒體故障。系統管理員可能必須重新載入資料庫。也可能必須請硬體提供者來處理。
      

  3.   

    你测试的范围可以在 1-18之间--==========================重要性層級 0 至 19
    重要性層級 10 的錯誤訊息屬於資訊性訊息。重要性層級 11 至 16 的錯誤訊息由使用者產生,並可由使用者更正。重要性層級 17 與 18 由資源或系統錯誤所產生,且使用者的工作階段不會中斷。使用 sp_addmessage 可以將重要性層級 1 至 25 的使用者自訂訊息加入 sysmessages 中。只有系統管理員可以加入重要性層級介於 19 與 25 之間的訊息。
      

  4.   

    DigJim非常感谢你!!
    在查询分析器中执行操作后以可以出现提示,
    但此错误并没有传到前台,错误级别我以设定为‘21’了,
    如果从前台实现也可以,
    但想不出什么办法。不只有没有办法可以将这个函
    数的值给一个变量。
    sqlItem1为一个要执行的sql字符串,
    exec为执行sqlr的函数
    exec(sqlItem1)
      

  5.   

    DigJim非常感你!问题已经解决了!!!!