1樓:匿名使用者
觸發器(trigger)是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作( insert,delete, update)時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。 觸發器可以從 dba_triggers ,user_triggers 資料字典中查到。
sql3的觸發器是乙個能由系統自動執行對資料庫修改的語句。
語法:delimiter |
create trigger ``.``
< [ before | after ] > < [ insert | update | delete ] >
on [dbo]//dbo代表該錶的所有者
for each row
begin
--do something
end |
例子:-- 插入時執行觸發器
set ansi_nulls on
set quoted_identifier on
gocreate trigger [dbo].[rscopeninsert]
on [dbo].[rsc_info]
for insert
as www.2cto.com
declare
@v_rscid varchar(50),
@v_status int
begin
select @v_rscid=rscid,@v_status=status from inserted;
--取得當前資源資訊status>4 才插入資訊
if @v_status > 4
begin
insert into rsc_open_synchronous(rscid,opstatus,opdatetime) values (@v_rscid,'insert',getdate())
endend
--- 更新時執行觸發器
set ansi_nulls on
set quoted_identifier on
gocreate trigger [dbo].[rscopenupdate]
on [dbo].[rsc_info]
for update
asdeclare
@v_rscid varchar(50),
@v_status int
begin www.2cto.com
select @v_rscid=rscid,@v_status=status from inserted;
--取得當前資源資訊status>4 才更新資訊
if @v_status > 4
begin
update rsc_open_synchronous set opstatus = 'update', opdatetime = getdate() where rscid=@v_rscid
endend
2樓:匿名使用者
基本語法
create trigger tri_name
on table
for insert/update/deleted
assql code
例:create trigger tri_mc(tri_mc:自定義觸發器的名稱)
on table (table:觸發的表名)
for insert (觸發型別:insert,插入資料觸發 update,更新資料觸發 delete,刪除資料觸發)
asdeclare @kssj datetime (定義乙個變數,做中間處理)
declare @sqbh char(40)
select @kssj = kssj,@sqbh = sqbh from inserted
(插入資料時,插入的資料在表 inserted
更新資料時,更新後的資料在表 inserted 更新前的資料在表中 deleted
刪除資料時,刪除的資料在表 deleted
不同的操作可以,取出不同的中間資料,做處理,例子中取出插入的資料)
update table2 set isks = 1,kksj = @kssj where sqbh = @sqbh
(根據中間處理做相應操作,例子的處理為,將插入的值同步更新到另乙個表)
3樓:匿名使用者
仔細看看這段**:
update borrowrecord
set br.studentid=i.studentidfrom borrowrecord br , deleted d ,inserted i
where br.studentid=d.studentidfrom borrowrecord br , deleted d ,inserted i
表示用別名br來代替borrowrecord ,用d來代替deleted,用d來代替inserted。
明白了麼?
good luck!
4樓:
create trigger tg_upt_ttd on [dbo].[table]
for insert, update
asupdate table
set d = 'true'
from table,inserted dwhere table.主鍵 = d.主鍵and table.a = 'true'
and table.b = 'true'
and table.c = 'true'
5樓:在物理學之後
create trigger dbo.settrueon yourtable for updateasif exists (select 'true'
from inserted as i
where i.a = true and i.b = true and i.c = true )
update yourtable
set yourtable.d = truewhere yourtable.a = true and yourtable.
b = true and yourtable.c = true
6樓:使用者id以登出
declare @wages float,@allwages float
select @wages=sum(wages) from dbo.employee
print @allwages
update dbo.factory set allwages=@wages where factory='a1001'
7樓:
create trigger t_update on [table]
for update
asupdate [table] set d=1 where a=1 and b=1 and c=1
sql資料庫中的觸發器怎麼寫啊?急
8樓:匿名使用者
問問題總得說清楚吧,
你的觸發條件是什麼?你的觸發動作是什麼?
你這樣提問無頭無腦的
sql server裡面的觸發器怎麼寫?
9樓:勞雙韶旭
if(object_id('tgr_classes_insert','tr')
isnot
null)
drop
trigger
tgr_classes_insert
gocreate
trigger
tgr_classes_insert
ont_user
forinsert
--插入觸發
as--定義變數
declare
@username
varchar(20),
@password
varchar(20),
@temp
int;
--在inserted表中查詢已經插入記錄資訊select
top1
@username
=username,
@password
=userpass
from
t_user
order
bydeac;
insert
into
login
(username,userpass)values(@username,@password)
10樓:
update borrowrecord
set br.studentid=i.studentidfrom borrowrecord br , deleted d ,inserted i
where br.studentid=d.studentid其中br代表當前查詢表的別名,d代表在插入新值之前(即修改前)的表的別名,i代表在插入新值之後(即修改後)的表的別名
11樓:匿名使用者
仔細看看這段**:
update borrowrecord
set br.studentid=i.studentidfrom borrowrecord br , deleted d ,inserted i
where br.studentid=d.studentidfrom borrowrecord br , deleted d ,inserted i
表示用別名br來代替borrowrecord ,用d來代替deleted,用d來代替inserted。
明白了麼?
good luck!
12樓:匿名使用者
基本語法格式
create trigger tri_name
on table
for insert/update/deleted
assql code
例:create trigger tri_mc(tri_mc:自定義觸發器的名稱)
on table (table:觸發的表名)
for insert (觸發型別:insert,插入資料觸發 update,更新資料觸發 delete,刪除資料觸發)
asdeclare @kssj datetime (定義乙個變數,做中間處理)
declare @sqbh char(40)
select @kssj = kssj,@sqbh = sqbh from inserted
(插入資料時,插入的資料在表 inserted
更新資料時,更新後的資料在表 inserted 更新前的資料在表中 deleted
刪除資料時,刪除的資料在表 deleted
不同的操作可以,取出不同的中間資料,做處理,例子中取出插入的資料)
update table2 set isks = 1,kksj = @kssj where sqbh = @sqbh
(根據中間處理做相應操作,例子的處理為,將插入的值同步更新到另乙個表)
請問sql觸發器insert觸發器如何使用
謹傑 在sql server中使用 create trigger insert stu on stufor insert asinsert into user uname,upassword select sid,sid from inserted在oracle中使用,預設密碼為學生id號creat...
資料庫觸發器有什麼作用,SQL中觸發器有什麼作用
觸發器的作用 自動計算資料值,如果資料的值達到了一定的要求,則進行特定的處理。同步實時地複製表中的資料。實現複雜的非標準的資料庫相關完整性規則。可在寫入資料表前,強制檢驗或轉換資料。觸發器發生錯誤時,異動的結果會被撤銷。部分資料庫管理系統可以針對資料定義語言 ddl 使用觸發器,稱為ddl觸發器。可...
SQL觸發器有什麼用處啊
舉個例子,比如 入庫單錶 入庫統計表 使用者只要錄入某貨就行了 入庫統計表該貨的總數量的變更,這是由觸發器完成的再舉個例子 工資表當工資超過10000.00元,該職員的收入狀況字段自動換成 高收入 使用者只需要記錄職員的工資,收入狀態由觸發器自動完成還有個例子 貨架表 該錶記錄了所有貨物和所在貨架 ...
SQL如何建立觸發器,SQL如何建立乙個觸發器
這最好用程式控制,有資料庫sql05可用加密.也可用如果對mssql的使用者資訊有興趣的,可能會發現master.dbo.sysxlogins裡面存放著使用者的口令,可是呢,password欄位如果不是null就是一堆看不懂的binary,這個口令是怎麼加密的呢?其實只要仔細看看master.dbo...
SQL裡中儲存過程和觸發器,如何建立
觸發器是一種特殊的儲存過程,2.觸發器是在對錶進行插入 更新或刪除操作時自動執行的儲存過程 3.觸發器通常用於強制業務規則 4.觸發器是一種高階約束,可以定義比用check 約束更為複雜的約束 5.可執行複雜的sql語句 if while case delete 觸發器 insert 觸發器 upd...