1樓:匿名使用者
create trigger a表_delon a表for delete
as--set nocount on
delete e
from a表 e
inner join deleted d on e.主鍵id = d.主鍵id
2樓:匿名使用者
create trigger tri_del on table a for deleteasdeclare @id intselect @id=id from deleteddelete from b where id=@id
3樓:匿名使用者
在sql中,觸發器是一種特殊型別的儲存過程,它不同於sql的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update、 insert、 delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料的處理必須符合由這些sql 語句所定義的規則。
觸發器的主要作用就是其能夠實現由主鍵和外來鍵所不能保證的複雜的參照完整性和資料的一致性。除此之外,觸發器還有其它許多不同的功能:
(1)強化約束(enforce restriction)
觸發器能夠實現比check 語句更為複雜的約束。
(2)跟蹤變化(auditing changes)
觸發器可以偵測資料庫內的操作,從而不允許資料庫中未經許可的指定更新和變化。
(3)級聯執行(cascaded operation)。
觸發器可以偵測資料庫內的操作,並自動地級聯影響整個資料庫的各項內容。例如,某個表上的觸發器中包含有對另外一個表的資料操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。
(4)儲存過程的呼叫(stored procedure invocation)。
為了響應資料庫更新觸,發器可以呼叫一個或多個儲存過程,甚至可以通過外部過程的呼叫而在dbms( 資料庫管理系統)本身之外進行操作。
由此可見,觸發器可以解決高階形式的業務規則或複雜行為限制以及實現定製記錄等一些方面的問題。例如,觸發器能夠找出某一表在資料修改前後狀態發生的差異,並根據這種差異執行一定的處理。此外一個表的同一型別(insert、 update、 delete)的多個觸發器能夠對同一種資料操作採取多種不同的處理。
總體而言,觸發器效能通常比較低。當執行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因為這些表既不在記憶體中也不在資料庫裝置上,而刪除表和插入表總是位於記憶體中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。
觸發器的種類
sql server 2000 支援兩種型別的觸發器:after 觸發器和instead of 觸發器。其中after 觸發器即為sql server 2000 版本以前所介紹的觸發器。
該型別觸發器要求只有執行某一操作(insert update delete) 之後,觸發器才被觸發,且只能在表上定義。可以為針對表的同一操作定義多個觸發器。對於after 觸發器,可以定義哪一個觸發器被最先觸發,哪一個被最後觸發,通常使用系統過程sp_settriggerorder 來完成此任務。
instead of 觸發器表示並不執行其所定義的操作(insert、 update、 delete),而僅是執行觸發器本身。既可在表上定義instead of 觸發器,也可以在檢視上定義instead of 觸發器,但對同一操作只能定義一個instead of觸發器。
如何用sql語句刪除 sql server 中的觸發器
4樓:
-- 檢視資料庫已有觸發器
use yourdatabase
goselect * from sysobjects where xtype='tr'
-- 檢視單個觸發器
exec sp_helptext '觸發器名'
--刪除觸發器:
基本語句如下:
drop trigger trigger_name
5樓:頓永修召己
你可以直接用語句寫呀,如:
create
trigger
[trigger
name]
on[dbo].[table
name]
forinsert,
update,
delete
as或者你用sql
server的企業管理器,選中要建立觸發器的表,點後鍵,然後選擇管理觸發器,這時會彈出一個編輯視窗,然後自己編寫觸發器就ok了。
6樓:dl_會飛的青蛙
7樓:江南桃花劫
禁用或啟用觸發器語法:
disable trigger 觸發器名稱 on [all server|database] ;
enable trigger 觸發器名稱 on [all server|database]
刪除觸發器
drop trigger 觸發器名稱 [all server|database];
例如 drop trigger emp on database
8樓:匿名使用者
drop trigger
9樓:孟德
drop trigger chufaqi
sql中,如何建立一個有條件的觸發器 10
10樓:匿名使用者
以 delete 觸發為例:
create trigger tri_deleteon a --將要進行更改的表名
for delete --給表刪除一條資料的時候觸發asdeclare @aa varchar(10)select @aa=a from deletedif @aa='a' --處理的條件
begin
raiserror('錯誤',16,8)
rollback tran
end觸發器效果:刪除表a資料,如果a列為 『a』,即阻止刪除,提示『錯誤』
簡單刪除觸發器的實現
create trigger student go on dbo.student1 for insert asdeclare errno int,errmsg varchar 255 name varchar 20 id char 10 age datetime class varchar 20 s...
sql觸發器判斷空值更新資料,sql 更新觸發器 更新指定欄位值為某個值時觸發
create trigger tri on table 在student表中建立觸發器 for update 為什麼事件觸發 as 事件觸發後所要做的事情 if update table begin update table if a then set a b endif from table br...
sql觸發器怎麼獲取插入的記錄轉存到另資料庫的表裡
create trigger a1 a on dbo a1 for insert asinsert into b.dbo.b1 g,h,j select c as g,d as h,e as j from inserted 在a資料庫a1表,加上面的觸發器 只限於同一臺伺服器不通資料庫資料轉存 如果...