sql查看觸發器
1. sql觸發器結果顯示
點擊運行即可。在sql軟體中,觸發器要顯示結果,需要點擊運行按鈕即可,SQL是具有數據操縱和數據定義等歷乎梁多頃拿種功能肢運的資料庫語言。
2. 怎麼在sql2000查找觸發器
最基本的觸發器是針對表的insert、update、delete這三種操作來的。觸發器可以建立在表上,也可以建立在視圖上。建立在表上的觸發器會在表內容發生改變時觸發。建立在視圖上的觸發器會在視圖內容改變時觸發。注意,視圖觸發器僅會在明確對視圖進行操作的sql語句執行時才會觸發,當基本表的內容發生改變而引起視圖內容變化時,不會觸發視圖觸發器。
下面是建立表觸發器的代碼:
create
or
replace
trigger
tg_e_contact
before
update
or
insert
or
delete
on
e_contact
for
each
row
begin
if
inserting
then
insert
into
[email protected]
values
(:new.telephone,
:new.employeeid,
:new.status);
else
if
updating
then
update
[email protected]
s
set
s.telephone
=
:new.telephone,
s.employeeid
=
:new.employeeid,
s.status
=
:new.status
where
s.employeeid
=
:old.employeeid;
else
if
deleting
then
delete
from
[email protected]
s
where
s.employeeid
=
:old.employeeid;
end
if;
end
if;
end
if;
end;
下面是建立視圖觸發器的代碼:(注意裡面的instead
of)
create
or
replace
trigger
tg_e_contact
before
instead
of
update
or
instead
of
insert
or
instead
of
delete
on
e_contact
for
each
row
begin
if
inserting
then
insert
into
[email protected]
values
(:new.telephone,
:new.employeeid,
:new.status);
else
if
updating
then
update
[email protected]
s
set
s.telephone
=
:new.telephone,
s.employeeid
=
:new.employeeid,
s.status
=
:new.status
where
s.employeeid
=
:old.employeeid;
else
if
deleting
then
delete
from
[email protected]
s
where
s.employeeid
=
:old.employeeid;
end
if;
end
if;
end
if;
end;
3. SQL資料庫中觸發器在哪可以查看到呢
系統的sysobject表中,xtype=『TR』
select * from sysobjects where xtype=『TR』
就能看到你的資料庫中說有的觸發器,及其相關參數了
4. SQL中的「觸發器」是什麼
觸發器是對表進行插入、更新、刪除的時候會自動執行的特殊存儲過程。x0dx0ax0dx0a觸發器一般用在check約束更加復雜的約束上面。例如在執行update、insert、delete這些操作的時候,系統會自動調用執行該表上對應的觸發器。x0dx0ax0dx0aSQL Server 2005中觸發器可以分為兩類:DML觸發器和DDL觸發器,其中DDL觸發器它們會影響多種數據定義語言語句而激發,這些語句有create、alter、drop語句。 x0dx0ax0dx0a DML觸發器分為: x0dx0a 1、 after觸發器(之後觸發) x0dx0a a、 insert觸發器 x0dx0a b、 update觸發器 x0dx0a c、 delete觸發器 x0dx0a 2、 instead of 觸發器 (之前觸發) x0dx0ax0dx0a其中after觸發器要求只有執行某一操作insert、update、delete之後觸發器才被觸發,且只能定義在表上。而instead of觸發器表示並不執行其定義的操作(insert、update、delete)而僅是執行觸發器本身。既可以在表上定義instead of觸發器,也可以在視圖上定義。 x0dx0ax0dx0a觸發器有兩個特殊的表:插入表(instered表)和刪除表(deleted表)。這兩張是邏輯表也是虛表。有系統在內存中創建者兩張表,不會存儲在資料庫中。而且兩張表的都是只讀的,只能讀取數據而不能修改數據。這兩張表的結果總是與被改觸發器應用的表的結構相同。當觸發器完成工作後,這兩張表就會被刪除。Inserted表的數據是插入或是修改後的數據,而deleted表的數據是更新前的或是刪除的數據。x0dx0ax0dx0aUpdate數據的時候就是先刪除表記錄,然後增加一條記錄。這樣在inserted和deleted表就都有update後的數據記錄了。注意的是:觸發器本身就是一個事務,所以在觸發器裡面可以對修改數據進行一些特殊的檢查。如果不滿足可以利用事務回滾,撤銷操作。
5. sql server知道觸發器名如何查看裡面代碼
方法步驟如下:閉閉友
1、首先打開計算機,進入計算機的對象資源管理器界面,在界面內找到如圖下的文件夾並右鍵單擊打開。
6. SQL中,觸發器是什麼
1. 基本概念x0dx0a觸發器是特殊的存儲過程,基於一個表創建,主要作用就是實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據一致性。x0dx0a當觸發器所保護的數據發生變化(update,insert,delete)後,自動運行以保證數據的完整性和正確性。通俗的說:通過一個動作(update,insert,delete)調用一個存儲過程(觸發器)。x0dx0a2. 類型x0dx0a(1)DML觸發器x0dx0a在資料庫中發生數據操作語言(DML)事件時將啟用。DML 事件包括在指定表或視圖中修改數據的 INSERT 語句、UPDATE 語句或 DELETE 語句。DML 觸發器可以查詢其他表,還可以包含復雜的 T-SQL 語句。系統將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待,如果檢測到錯誤(例如,磁碟空間不足),則整個事務即自動回滾。x0dx0a(2)DDL 觸發器x0dx0aSQL Server 2005 的新增功能。當伺服器或資料庫中發生數據定義語言(DDL)事件時將調用這些觸發器。但與DML觸發器不同的是,它們不會為響應針對表或視圖的UPDATE、INSERT或DELETE語句而激發,相反,它們會為響應多種數據定義語言(DDL)語句而激發。這些語句主要是以CREATE、ALTER和DROP開頭的語句。DDL觸發器可用於管理任務,例如審核和控制資料庫操作。x0dx0a 創建DML觸發器x0dx0a1. 使用存儲過程模板創建存儲過程x0dx0a在【對象資源管理器】窗口中,展開「資料庫」節點,再展開所選擇的具體資料庫節點,再展開「表」節點,右擊要創建觸發器的「表」,選擇「新建觸發器」命令,如圖所示:x0dx0a在右側查詢編輯器中出現觸發器設計模板,用戶可以在此基礎上編輯觸發器,單擊「執行」按鈕,即可創建該觸發器。x0dx0ax0dx0a2. 使用T-SQL語句創建表x0dx0aCREATE TRIGGER 觸發器x0dx0aON 表名x0dx0aFOR[update,insert,delete ]x0dx0aAS SQL語句x0dx0a例9-6:創建基於表reader ,DELETE操作的觸發器。x0dx0aUSE Libraryx0dx0aGOx0dx0aIF EXISTS(SELECT name FROM sysobjectsx0dx0a WHERE name='reader_d' AND type='TR')x0dx0aDROP TRIGGER reader_d --如果已經存在觸發器reader_d則刪除x0dx0aGOx0dx0aCREATE TRIGGER reader_d --創建觸發器x0dx0aON reader --基於表 x0dx0aFOR DELETE --刪除事件x0dx0aASx0dx0aPRINT '數據被刪除!' --執行顯示輸出x0dx0aGOx0dx0a 試試吧!x0dx0a應用:x0dx0aUSE Libraryx0dx0aGOx0dx0aDELETE readerx0dx0awhere Rname='aaa'x0dx0a執行結果:x0dx0a數據被刪除!x0dx0a(所影響的行數為 1 行)x0dx0a例9-7:在表borrow中添加借閱信息記錄時,得到該書的應還日期。x0dx0a說明:在表borrow中增加一個應還日期SReturnDate。x0dx0aUSE Libraryx0dx0aIF EXISTS (SELECT name FROM sysobjectsx0dx0aWHERE name ='T_return_date' AND type='TR')x0dx0aDROP TRIGGER T_return_datex0dx0aGOx0dx0aCREATE TRIGGER T_return_date --創建觸發器x0dx0aON Borrow --基於表borrowx0dx0aAfter INSERT --插入操作x0dx0aASx0dx0a--查詢插入記錄INSERTED中讀者的類型x0dx0aDECLARE @type int,@dzbh char(10),@tsbh char(15)x0dx0aSET @dzbh=(SELECT RID FROM inserted)x0dx0aSET @tsbh=(SELECT BID FROM inserted)x0dx0aSELECT @type= TypeIDx0dx0aFROM readerx0dx0aWHERE RID=(SELECT RID FROM inserted)--副本x0dx0a/*把Borrow表中的應還日期改為x0dx0a當前日期加上各類讀者的借閱期限*/x0dx0aUPDATE Borrow SET SReturnDate=getdate()+x0dx0aCASE x0dx0a WHEN @type=1 THEN 90x0dx0a WHEN @type=2 THEN 60x0dx0a WHEN @type=3 THEN 30x0dx0aENDx0dx0aWHERE RID=@dzbh and BID=@tsbhx0dx0a應用:x0dx0aUSE Libraryx0dx0aINSERT INTO borrow(RID,BID) values(','TP85-08')x0dx0a查看記錄:x0dx0a x0dx0a例9-8:在資料庫Library中,當讀者還書時,實際上要修改表brorrowinf中相應記錄還期列的值,請計算出是否過期。x0dx0aUSE Libraryx0dx0aIF EXISTS(SELECT name FROM sysobjectsx0dx0aWHERE name='T_fine_js' AND type='TR')x0dx0aDROP TRIGGER T_fine_jsx0dx0aGOx0dx0aCREATE TRIGGER T_fine_jsx0dx0aON borrowx0dx0aAfter UPDATEx0dx0aASx0dx0aDECLARE @days int,@dzbh char(10),@tsbh char(15)x0dx0aSET @dzbh=(select RID from inserted)x0dx0aSET @tsbh=(select BID from inserted)x0dx0aSELECT @days=DATEDIFF(day, ReturnDate, SReturnDate)x0dx0a--DATEDIFF函數返回兩個日期之差,單位為DAYx0dx0aFROM borrowx0dx0aWHERE RID=@dzbh and BID=@tsbhx0dx0aIF @days>0x0dx0a PRINT '沒有過期!'x0dx0aELSEx0dx0a PRINT '過期'+convert(char(6),@days)+'天'x0dx0aGOx0dx0a應用:x0dx0aUSE Libraryx0dx0aUPDATE borrow SET ReturnDate=-12-12'x0dx0aWHERE RID=' and BID='TP85-08'x0dx0aGOx0dx0a執行結果:x0dx0a過期-157 天x0dx0a(1 行受影響)x0dx0a例9-9:對Library庫中Reader表的 DELETE操作定義觸發器。x0dx0aUSE Libraryx0dx0aGOx0dx0aIF EXISTS(SELECT name FROM sysobjectsx0dx0a WHERE name='reader_d' AND type='TR')x0dx0aDROP TRIGGER reader_dx0dx0aGOx0dx0aCREATE TRIGGER reader_dx0dx0aON Readerx0dx0aFOR DELETEx0dx0aASx0dx0aDECLARE @data_yj intx0dx0aSELECT @data_yj=Lendnumx0dx0aFROM deletedx0dx0aIF @data_yj>0x0dx0a BEGINx0dx0a PRINT '該讀者不能刪除!還有'+convert(char(2),@data_yj)+'本書沒還。x0dx0a ROLLBACKx0dx0a ENDx0dx0aELSEx0dx0a PRINT '該讀者已被刪除!'x0dx0aGOx0dx0a應用:x0dx0aUSE Libraryx0dx0aGOx0dx0aDELETE Reader WHERE RID='x0dx0a執行結果:x0dx0a該讀者不能刪除!還有4 本書沒還。x0dx0a 修改觸發器x0dx0aALTER TRIGGER 觸發器x0dx0a 刪除觸發器x0dx0aDROP TRIGGER 觸發器x0dx0a 查看觸發器x0dx0asp_helptext trigger_namex0dx0asp_helptrigger table_name
7. sql 觸發器如何指定欄位更新才觸發
1、首先,嘗試創建一個觸發器,要求就是在AddTable這個表上創建一個Update觸發器。
8. SQL中如何查詢指定觸發器是否存在
我給你講一下吧,前提是我不知道你是sql server還是oracle:
那就先講sql server:select name from sysobjects where name='trig_insert' and type='tr'這句一般在建觸發器是第一句都寫得,name欄位是你的觸發器名稱,當然你一可以用模糊查詢like關鍵字來查。
其次是oracle ,他的觸發器在user_triggers這張表裡面,select trigger_name,trigger_type,table_name from user_triggers where trigger_name like' to%';
9. plsql developer中怎麼查看觸發器
1. 打開PL/SQL Developer如果 在機器上安裝了PL/SQL Developer的話,打開PL/SQL Developer界面輸入 用戶名,密碼和host名字,這個跟在程序中web.config中配置的完全相同,點擊確定 找到 需要調試的存儲過程所在的包(Package bodies),如PACK_ACTIVITY,點擊右鍵,在彈出菜單中選擇[查看],洞畢衡得到包中的所有存儲過程和他們的代碼.
2. 添加debug信息為了 能夠單步跟蹤存儲過程,需要為其所在的包添加debug信息,右鍵點擊需要調試的包,在彈出菜單中選中[添加調試信息](這個很重要).這樣 就為包體添加了調試信息。
3. 調 試存儲過程現在 所有的准備工作都做好了,可以調試跟蹤存儲過程了。選擇 需要調試的存儲過程,點擊右鍵,在彈出菜單中 選擇[測試],進去測試窗口.測試窗口中有為了測試該存儲過程自動所產生的代碼,當然你也可以自己另外加入和修改代碼,對於我們目前只是為了調試存儲過程, 自動生成的代碼已經足夠了。接著按照如下的步驟進行調試。
(1)添加存儲過程所需要的參數,我們項目中的大多數存儲過程都是需要參數 的,參數可以在測試窗口右下部分輸入。如:GetPanNO_New需要一個輸入參數v_employeeid,我們輸入數渣180,輸出參數是mycursor,是查看結果的,不需要輸入任何值。
(2)開始調試,點擊[調試]菜單->[開始](或者按F9),就進去調試模式了,程序開始停在begin這一行.
(3)納做以後的調試過程跟我們熟悉的的調試過程就一樣了:運行(Ctrl+R)單步 進入(Ctrl+N)單步 跳過(Ctrl+O)單步 退出(Ctrl+T)或者 點擊debug工具條上的按扭:當按Ctrl+N進去存儲過程的源代碼中後 在這 個窗口中可以查看過程中的變數值和堆棧。
(4)調試運行完了後,可以查看結果如下(點擊mycursor變數旁邊的按鈕).
4. Tip 令人 比較郁悶的是我們項目中很多的存儲過程都是一個SELECT語句,不管這個SELECT語句多麼復雜(SELECT語句中有嵌套的子SELECT語句),它也只能作為一行代碼,單步跟蹤就沒有什麼意義了。
10. sql如何取得觸發器update前的值
具體操作步驟如下:
1、首先,創建一個觸發雹差器滲含,要求是在AddTable表上創建update觸發器,如下圖所示,然後進入下一步。