掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
以下的文章主要向大家講述的是圖形化操作SQL Server觸發(fā)器的實際應用,如果你在圖形化操作SQL Server觸發(fā)器的實際應用中存在不解之處時,你不妨瀏覽下面的文章,希望你能從中獲得自己想要的東西。

創(chuàng)新互聯(lián)服務項目包括通河網站建設、通河網站制作、通河網頁制作以及通河網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,通河網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到通河省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
查看觸發(fā)器情況
圖形化操作結合T-SQL命令
(1)sp_helptrigger 觸發(fā)器名
查看觸發(fā)器的名稱,擁有者和五個布爾值
supdate,isdelete,isinsert,isafter,isinsteadof
(2)sp_helptext 觸發(fā)器名
查看文本信息
(3)設置某一SQL Server觸發(fā)器的無效和重新有效
無效: use northwind alter table 表名 disable trigger 觸發(fā)器名 重新有效: use northwind alter table 表名 enable trigger 觸發(fā)器名
(4)刪除觸發(fā)器
use northwind drop trigger 觸發(fā)器名,觸發(fā)器名
作業(yè)3:
在order_test表上建立一個插入SQL Server觸發(fā)器,在添加一個訂單時,減少cust_test表的相應貨物的記錄的庫存量。
作業(yè)4:
在order_test表上建立一個插入觸發(fā)器,規(guī)定訂單日期(Odate)不能手工修改。
作業(yè)5:
要求訂購的物品一定要在倉庫中有的,并且數量足夠。
例6:
在order_test表上建立一個插入觸發(fā)器,同時插入多行數據時,要求訂購的物品一定要在倉庫中有的。
答案3:
use northwind go create trigger cust_orders_ins3 on order_test after insert as update cust_test set cstorage=cstorage-inserted.orders from cust_test,inserted where cust_test.customerid=inserted.customerid
答案4:
use northwind go create trigger orderdateupdate on order_test after update as if update (odate) begin raiserror('Error',10,1) rollback transaction end
答案5:
use northwind go create trigger order_insert5 on order_test after insert as begin if(select count(*) from cust_test,inserted where cust_test.customerid=inserted.customerid)=0 begin print 'No entry in goods for your order' rollback transaction end if(select cust_test.cstorage from cust_test,inserted where cust_test.customerid=inserted.customerid)< (select inserted.orders from cust_test,inserted where cust_test.customerid=inserted.customerid) begin print 'No enough entry in goods for your order' rollback transaction end end
答案6:
use northwind go create trigger order_insert6 on order_test after insert as if (select count(*) from cust_test,inserted where cust_test.customerid=inserted.customerid)<>@@rowcount --可以在觸發(fā)器邏輯中使用 @@ROWCOUNT 函數以區(qū)分單行插入和多行插入。 begin delete order_test from order_test,inserted where order_test.orderid=inserted.orderid and inserted.customerid not in (select customerid from cust_test) end print @@rowcount
Transact-SQL 參考
- SET ROWCOUNT
使 Microsoft? SQL Server? 在返回指定的行數之后停止處理查詢。
語法
- SET ROWCOUNT { number | @number_var }
參數
- number | @number_var
是在停止給定查詢之前要處理的行數(整數)。
注釋
建議將當前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 語句重新編寫為使用 TOP 語法。有關更多信息,請參見 DELETE、INSERT 或 UPDATE。
對于在遠程表和本地及遠程分區(qū)視圖上執(zhí)行的 INSERT、UPDATE 和 DELETE 語句,忽略 SET ROWCOUNT 選項設置。
若要關閉該選項(以便返回所有的行),請將 SET ROWCOUNT 指定為 0。
說明 設置 SET ROWCOUNT 選項將使大多數 Transact-SQL 語句在已受指定數目的行影響后停止處理。這包括觸發(fā)器和 INSERT、UPDATE 及 DELETE 等數據修改語句。ROWCOUNT 選項對動態(tài)游標無效,但限制鍵集的行集和不感知游標。使用該選項時應謹慎,它主要與 SELECT 語句一起使用。
如果行數的值較小,則 SET ROWCOUNT 替代 SELECT 語句 TOP 關鍵字。
SET ROWCOUNT 的設置是在執(zhí)行或運行時設置,而不是在分析時設置。
權限
SET ROWCOUNT 權限默認授予所有用戶。
示例
SET ROWCOUNT 在指定的行數后停止處理。在下例中,注意有 x 行滿足預付款少于或等于 ?$5,000 的條件;但是,從更新所返回的行數中可以看出并非所有的行都得到處理。ROWCOUNT 影響所有的 Transact-SQL 語句。
- USE pubs GO SELECT count(*) AS Cnt FROM titles WHERE advance >= 5000 GO
下面是結果集:
Cnt ----------- 11 (1 row(s) affected) 現在,將 ROWCOUNT 設置為 4,并更新預付款等于或大于 ?$5,000 的所有行。
- SET ROWCOUNT to 4. SET ROWCOUNT 4 GO UPDATE titles SET advance = 5000 WHERE advance >= 5000 GO
以上的相關內容就是對圖形化操作SQL Server觸發(fā)器的介紹,望你能有所收獲。
【編輯推薦】

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流