觸發器的關鍵字為trigger,分為inserted 和
deleted
理解觸發器裡面的兩個臨時的表:deleted , inserted 。注意deleted 與inserted分別表示觸發事件的表「舊的一條記錄」和「新的一條記錄」。
乙個資料庫系統中有兩個虛擬表用於儲存在表中記錄改動的資訊,分別是:
inserted和deleted區別
虛擬表inserted
虛擬表deleted
在表記錄新增時
存放新增的記錄
不儲存記錄
修改時存放用來更新的新記錄
存放更新前的記錄
刪除時不儲存記錄
存放被刪除的記錄
---------------------例項----------------------------
---建立資料表
create table t_product
(p_id int primary key identity,
p_name nvarchar(24),
p_quantity int,
p_price decimal,
t_id int
)--建立訂單表
create table t_order
(o_id int primary key identity,
p_id int,
o_num int
)------------------建立觸發器--------------------
create trigge triadd ----定義觸發器名稱
on t_order----定義觸發的表
for insert ---定義用那種方法觸發
asbegin
--定義變數
declare @num int;
declare @id int;
--查詢商品表的id
select @id=p_id from inserted
--查詢訂單表的數量
select @num=o_num from inserted
---修改商品表中的數量
update t_product set p_quantity-=@num where p_id=@id
endcreate trigger triadd
on dbo.t_order
after insert
asbegin
declare @num int;
declare @sum int;
declare @id int;
select @id=p_id,@num=o_num from inserted
select @sum=p_quantity from t_product where p_id=@id
update t_product set p_quantity=@sum-@num where p_id=@id
end--------------------------------------事務----------------------------------------------
開始事物:begin transaction
提交事物:commit transaction
回滾事務:rollback transaction
begin tran --開始事務
insert into t_order values(1,1)
insert into t_order values(1,5)
insert into t_order values(2,2)
---事務提交
commit tran
---用一條sql語句查詢出「每門」課程都大於80分的學生姓名
name chengji fengshu
張三 數學 75
張三 語文 81
李四 數學 90
李四 語文 76
王五 數學 81
王五 語文 100
王五 英語 90
給個思路,供參考:
先查出低於80分的學生名單,然後再用姓名作為條件對比,排除剛才查到的學生
sql server:
select distinct [name] from [表] where [name] not in
(select [name] from [表] where [fengshu] < = 80
)
觸發器 事務
觸發器 業務是緊密相連的,不可分割的,可以使用觸發器 觸發器的四個要素 1.監視地點 2.監視事件 3.觸發時間 4.觸發事件 after 在之後,當我監視事件發生增刪改以後,進行觸發 before 先完成觸發,再進行增刪改。監視事件之前 建立觸發器的語法 create trigger 觸發器名稱 ...
觸發器 事務
觸發器 觸發器為特殊型別的儲存過程,可在執行語言事件時自動生效。sql server 包括三種常規型別的觸發器 dml 觸發器 ddl 觸發器和登入觸發器。當伺服器或資料庫中發生資料定義語言 ddl 事件時將呼叫 ddl 觸發器。登入觸發器將為響應 logon 事件而激發儲存過程。與 sql ser...
事務與觸發器A
事務 具有統一性的過程。可以新增for update來限制併發更新。主要由commit和rollback組成,他們不可同時有序執行。觸發器 不允許有引數。對於表加上約束,審計表的資訊。資料操作源觸發器,它建立在表的基礎之上。行級觸發器 例如建立刪除觸發器 create or replace trig...