觸發器的使用是否方便的思考,觸發器的應用和用法?

2022-10-27 22:10:14 字數 4887 閱讀 3796

1樓:栽培者

觸發器使用最多的地方就是維護資料的完整性,的確,它能實現的東西,在**裡大部份都能實現,但是如果涉及到多使用者同時操作的話,在程式裡寫**當然比不上在觸發器裡寫**來的方便。

就拿安全庫存來說吧,比如現在有2個使用者同時需要出同一種產品,當前庫存為100,a使用者需要80,b使用者需要50;在這之前他們所知道的都是一個資料,即庫存為100,他們都認為可以出庫,但你會發現一個問題,如果他們都出庫的話,庫存數明顯不夠,那麼此時如果在程式裡寫**的話,就需要進行出庫前的判斷並做事務處理,但是如果在觸發器裡寫的話,那麼a、b使用者都可以出庫(update庫存),只是有一個使用者會被提示庫存不足,因為在觸發器裡已經寫了如果當前要出庫的數量大於庫存則返回一個錯誤資訊。

另外,如果有多個系統(如:web系統、桌面系統)同時用到這個資料庫的話,只需要在觸發器裡寫相應的維護**,而不需要同時在各個系統中寫同樣的**。

以上所說只是觸發器的一方面應用,它也可以做一些其他「善後」工作,有待你去發掘了。

至於測試的話,可以用查詢分析器來直接寫語句測試。

2樓:匿名使用者

觸發器是一種過時的技術!資料完整性可以通過約束來實現!

觸發器的應用和用法?

3樓:匿名使用者

1、觸發器的定義就是說某個條件成立的時候,觸發器裡面所定義的語句就會被自動的執行。因此觸發器不需要人為的去呼叫,也不能呼叫。

2、觸發器的觸發條件其實在定義的時候就已經設定好了。

3、觸發器可以分為語句級觸發器和行級觸發器。簡單的說就是語句級的觸發器可以在某些語句執行前或執行後被觸發。而行級觸發器則是在定義的了觸發的表中的行資料改變時就會被觸發一次。

4、具體舉例:

1)、 在一個表中定義語句級的觸發器,當這個表被刪除時,程式就會自動執行觸發器裡面定義的操作過程。這個【刪除表的操作】就是觸發器執行的條件。

2)、 在一個表中定義行級的觸發器,那當【這個表中一行資料發生變化】的時候,比如刪除了一行記錄,那觸發器也會被自動執行了。

5、建立觸發器語句

6、觸發器作用(應用場景)

(1)資料確認

(2)實施複雜的安全性檢查

(3)做日誌記錄,跟蹤表上所做的資料操作等

(4)資料的備份和同步;

擴充套件資料

一、觸發器介紹

1、資料庫觸發器是一個與表相關聯的、儲存的 pl/sql 程式。每當一個特定的資料操作語句(insert,update,delete)在指定的表上發出時,oracle 自動地執行觸發器中定義的語句序

列。 2、觸發器的作用

觸發器可用於:

(1)資料確認

(2)實施複雜的安全性檢查

(3)做審計,跟蹤表上所做的資料操作等

(4)資料的備份和同步

3、觸發器的型別

(1)語句級觸發器

在指定的操作語句操作之前或之後執行一次,不管這條語句影響了多少行 。

(2)行級觸發器(for each row)

觸發語句作用的每一條記錄都被觸發。在行級觸發器中使用 old 和 new 偽記錄變數,識別值的狀態。

4、建立觸發器的語法

create [or replace] trigger 觸發器名

on 表名

[for each row [when(條件) ] ]

參考資料

4樓:

樓上寫的很詳細了,好好看看吧!

sql中的觸發器該不該使用?

5樓:匿名使用者

該使用,很有用。例如當你刪除一個類別時,你要連同這個類別下的內容全部刪除,就可以使用觸發器。

6樓:匿名使用者

這得看實際的業務需求了,並沒有一定的規定,觸發器是為了保證資料的完整性和增加資料的嚴謹性而提出的,對於兩個表的級聯關係處理不錯,比如某個學生輟學後 他的相關記錄也應該從班級中刪除 當然觸發器也有一定的缺點,一個複雜的tigger不容易維護 可讀性差 用的不好很容易造成資料混亂 所以一定要慎用啊!

7樓:匿名使用者

不能濫用,否則維護起來相當麻煩,個人認為大多在表關聯時,一些比較複雜的邏輯處理,可以使用來幫助資料庫的穩定及優化資料庫

觸發器有什麼特點和優點? 5

8樓:ac創客

d觸發器:原理和功能講解,簡單實用

9樓:私你久久

觸發器具有以下特點:

(1)觸發器有兩種能自行保持的穩定狀態,分別表示二進位制數0和1或二值資訊邏輯0和邏輯1。

(2)在適當的觸發訊號作用下,觸發器可從一種穩定狀態轉變為另一種穩定狀態;當觸發訊號消失後,能保持現有狀態不變。

觸發器的優點:

觸發器可通過資料庫中的相關表實現級聯更改;不過,通過級聯引用完整性約束可以更有效地執行這些更改。觸發器可以強制比用 check 約束定義的約束更為複雜的約束。與 check 約束不同,觸發器可以引用其它表中的列。

例如,觸發器可以使用另一個表中的 select 比較插入或更新的資料,以及執行其它操作,如修改資料或顯示使用者定義錯誤資訊。觸發器也可以評估資料修改前後的表狀態,並根據其差異采取對策。一個表中的多個同類觸發器(insert、update 或 delete)允許採取多個不同的對策以響應同一個修改語句

約束和觸發器在特殊情況下各有優勢。觸發器的主要好處在於它們可以包含使用 transact-sql **的複雜處理邏輯。因此,觸發器可以支援約束的所有功能;但它在所給出的功能上並不總是最好的方法。

實體完整性總應在最低階別上通過索引進行強制,這些索引或是 primary key 和 unique 約束的一部分,或是在約束之外獨立建立的。

假設功能可以滿足應用程式的功能需求,域完整性應通過 check 約束進行強制,而引用完整性 (ri) 則應通過 foreign key 約束進行強制。在約束所支援的功能無法滿足應用程式的功能要求時,觸發器就極為有用。

10樓:匿名使用者

給你舉一個簡單的例子吧,比如你要做一個網上**的**,那麼一定有一個訂單表和一個庫存表,當有人下一個訂單時,你就要把庫存表裡的數量減一,這時你就可以在訂單表的插入操作上寫一個觸發器,當有插入操作發生時,自動對庫存表的的數量減1,明白了嗎?這就是他的特點和優點。

11樓:匿名使用者

使用觸發器有如下優點:

1. 自動執行。觸發器在對錶的資料作了任何修改(比如手工輸入或者應用程式的操作)之後立即被啟用。

2. 級聯更新。觸發器可以通過資料庫中的相關表進行層疊更改,這比直接把**寫在前臺的做法更安全合理。

3. 強化約束。觸發器可以引用其它表中的列,能夠實現比check約束更為複雜的約束。

4. 跟蹤變化。觸發器可以阻止資料庫中未經許可的指定更新和變化。

5. 強制業務邏輯。觸發器可用於執行管理任務,並強制影響資料庫的複雜業務規則。

12樓:臨時賣表工

select * from dual

觸發器的作用是什麼?

13樓:源嬋湛聰

t觸發器的特性方程q*=tq'+t'q,t=0時,時鐘訊號到達後狀態保持不變;t=1時每來一個時鐘訊號它的狀態就發生一次翻轉,具有翻轉功能。在數電中常用來構成計數器。

14樓:匿名使用者

如果你刪除一條資料等於牽連著另一條sql語句一同被執行。

舉個你能懂的例子:

相當於在生活中你不小心踩了我一腳我隨後做出的反應明白了嗎?

當你插入一條sql語句的時候需要在其他表中做得處理,比如增加了這個表的資料你想同時增加兩個表的資料就需要用到觸發器,因為在介面寫業務邏輯往往很複雜,還不如直接在sql裡寫好,所以這時最好用到的就是觸發器了,懂了吧!

觸發器在專案中如何使用??

15樓:匿名使用者

假設有兩張表,一張為操作記錄表tba(myid,myx,myy),一張為賬戶餘額表tbb(myid,mysum)

myid:int型別

myx:money型別

myy:int型別(-1取錢,1存錢)

mysum:money型別

我想在我記錄存入多少錢的同時,在餘額表裡的mysum裡的資料也更著改變,而且我們也不需要對餘額表有任何操作

示例**如下:

create trigger mymoneytrg

on tba

for insert,update

asdeclare @id int,

@x money,

@y int

begin

select @id=myid,@x=myx,@y=myy from inserted

--這裡從inserted表裡取到了更新的必要資料,inserted表是更新的資料暫時存放的表,觸發器執行結束這個表就消失了

update tbb set mysum=(@x*@y+mysum) where myid=@id

end這個範例能在觸發器的作用\方法\語法等方面描述觸發器,希望這位同學能舉一反三

關於**寫的位置,當然是sql的查詢管理器

16樓:匿名使用者

觸發器 這麼寫

create tigger tg_nameon tablename

-- for --!這裡寫應為什麼事件觸發可以這麼寫for insert 或者 for update 都行我把正規化給你 你看下

create tigger tr_colnameon tablename

for [insert]、[update]、[delete]as

--操作**

go希望你能學的更好o(∩_∩)o哈!

sql觸發器如何使用,SQL觸發器如何使用

在sql中,觸發器是一種特殊型別的儲存過程,它不同於sql的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資...

SQL怎麼寫觸發器,SQL資料庫中的觸發器怎麼寫啊?急

此題唯一的難度是使用者名稱 假設使用者名稱已儲存在表currentuser中 給出插入操作的觸發器建立 其他類似 create trriger mytr1 on a for insert asdeclare username varchar 20 select username username f...

魔獸地圖編輯器中怎麼用觸發器讓英雄使用技能

你會做電影模式應該對we還是比較瞭解吧。我就直接給你說動作了。動作 單位 釋出命令 指定單位 單位就選你那英雄,釋出命令選擇發動技能,指定單位就是你想殺的單位。用觸發比如電影過程中你先加個等待或者在你估計時間差不多的對話後面加一條動作 命令xx單位,比如變數單位 技能 這裡的技能都是技能原型,選不到...