sql server中的觸發器問題

時間 2022-04-12 16:54:51

1樓:匿名使用者

'create trigger'必須是查詢批處理中的第一條語句。

觸發器不能開始和結束。您可以刪除,然後再建立。

,object_id(「時間表」),是在不為空的drop table時間表

去- 建立表

建立表時間表

(id int,

更新日期時間,日期時間,date_time )去- 刪除觸發器

object_id(「使用settime)是不是null的drop trigger了settime去- 建立乙個觸發器

create trigger了settime插入的時間表,更新

開始列印'aaaa'結束去

- 插入資料

插入時間表,值嗎??(1, '01-07-01 12:00:00','01-07-01 13:00:00')

乙個select * from時間表

- 觸發的

下降的觸發了settime

- 建立觸發器

建立觸發了settime

時間表插入,更新

開始「 ffff'

select * from時間表結束

2樓:

alter trigger [insert_dd]on[dbo].[訂單]

after insert

asdeclare @dd int,@kc int,@bh intselect @dd=數量,@bh=商品編號 from inserted

select @kc=數量 from 庫存 where 商品編號= @bh

update 庫存 set 數量=case when @kc-@dd>0 then @kc-@dd else 0 end

where 商品編號=@bh

sqlserver中觸發器的觸發型別有幾種?

3樓:教育仁昌

sql server中觸發器的觸發型別有三種。

1、dml觸發器,當資料庫中表中的資料發生變化時,包括insert,update,delete任意操作,如果對該錶寫了對應的dml觸發器,那麼該觸發器自動執行。

2、ddl觸發器,是sql server2005新增的觸發器,主要用於審核與規範對資料庫中表,觸發器,檢視等結構上的操作。比如在修改表,修改列,新增表,新增列等。它在資料庫結構發生變化時執行,主要用它來記錄資料庫的修改過程,以及限制程式設計師對資料庫的修改。

3、登入觸發器,登入觸發器將為響應 login 事件而激發儲存過程。與 sql server 例項建立使用者會話時將引發此事件。登入觸發器將在登入的身份驗證階段完成之後且使用者會話實際建立之前激發。

4樓:匿名使用者

主要是3種拉

insert

update

delete

5樓:葬樺

觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如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 觸發器。

6樓:匿名使用者

太專業了。我會用但是都叫不上來

建議你到網易的 教育學院去看看吧

關於sql server觸發器裡編寫語句問題

7樓:

一、需要使用兩個觸發器哦!

二、在程式的入口加入 **來插入兩個表

自己選擇一種方式去實現吧!

sql server裡如何獲得被觸發器觸發的表名?

8樓:swallow唱晚

建立表dbo.triggertest

create table dbo.triggertest ( rowid int identity primary key, somedata varchar(50) default newid() )

go---建立觸發器

create trigger dbo.itrg_triggertest on dbo.triggertest

for insert

as--查詢該觸發器觸發的表

select @@procid, object_name( @@procid )

select object_schema_name( parent_id ) + '.' + object_name( parent_id ) tablename from sys.triggers where object_id = @@procid

goinsert into dbo.triggertest default valuesgo

如何在sqlserver中使用觸發器觸發器主要優點

9樓:超級

觸發器的優點: 以事件方式來處理. 當資料發生變化的時候, 自動作處理.

缺點: 當資料庫之間 匯出匯入的時候, 可能會引起不必要的觸發邏輯.

存貯速度和執行速度: **是儲存在伺服器上, 執行速度主要取決於 資料庫伺服器的效能與觸發器**的複雜程度。

sql server 觸發器 中 for 怎麼使用

10樓:江城

建立觸發器的語法是:

create trigger 觸發器名稱 on(為哪個表建立觸發器) for (建立什麼樣的觸發器)

只要記住,for後面跟觸發器的型別就行了。

觸發器主要分2種,dml和ddl。after和instead of 都是dml觸發器,其中,after主要是對錶進行增、刪、改時觸發,而instead of 觸發器並不執行其所定義的操作,只執行觸發器本身。

判斷8. 在sql server中,觸發器的執行是在資料的插入.更新或刪除之前執行的。( )

11樓:賓士

錯誤。觸發器執行順序根據 before 和 after 關鍵字決定。

使用before 關鍵字:觸發器的執行是在資料的插入.更新或刪除之前執行的。

使用after關鍵字:觸發器的執行是在資料的插入.更新或刪除之後執行的。

sql server中如何定義觸發器

建立觸發器的語法 create trigger trigger nameon table name with encryption for delete,insert,update ast sql語句 gowith encryption表示加密觸發器定義的sql文字delete,insert,upd...

sql server 如何除錯觸發器

先分析觸發器 是否正確,再對相應表做插入 修改 刪除動作,看所產生的結果與預期的是否相同 用insert到另外一張表 vs 08 可以除錯儲存過程和觸發器。需要sql 05 開啟乙個服務 詳細的可以網上查一下 sql server 中如何建立觸發器 建立觸發器的語法 create trigger t...

SQL Server2019中觸發器怎麼用

這個問題的應該從實現什麼樣的業務需求說起。比如實現資料關聯更新等。你還得看看觸發器的型別有哪些,然後看看如何建立相關型別的觸發器,只要你弄明白了如何建立,只要有能觸發該觸發器的操作執行,該觸發器就會被觸發,進而實現你要實現的業務需求。當然,實現什麼樣的操作,還得需要你在語句塊中編寫特定的實現程式哦 ...

sql server 2019觸發器插入問題

create trigger 觸發器名 on a for update,insert,deleteasinsert into b select from a where 條件 樓主可以用這個 給你寫個框架 你看著填滿即可 有什麼不明白的可以隨時問我 希望採納alter trigger addtoa ...

關於SQL SERVER 2019 R2觸發器問題

採用觸發器是蠻方便的。那如果其他的話,可以嘗試一下這樣 在宿主語言中,使用型別於model的實體物件。物件包括流水號,收款金額。和拆分金額。類似乙個關聯查詢的結果 之後,當對model進行操作時,在model中做乙個檢查的方面,以保證拆分金額的和小於收款金額。原因 既然有流水號,那肯定會有收款金額的...