sql建立觸發器,避免死迴圈

2021-08-16 04:57:06 字數 1607 閱讀 6702

兩張使用者表,修改其中一張表a的密碼字段,另一張表b也同時更新字段。
同理的,修改表b的密碼字段,另一張表a也同時更新字段。
分別為兩張表建立觸發器,這樣就會出現,兩個觸發器會陷入死迴圈,處理方法如下:
create table [t_users]( 

[yhbm] [varchar](20) not null,

[pwd] [varchar](20) null)

create table [dbo].[tusers]( 

[usersname] [varchar](50) not null,

[userspwd] [varchar](50) not null)

create trigger [dbo].[truuser2]

on [dbo].[tusers] --在tuser表中建立觸發器

for update --為什麼事件觸發

as --事件觸發後所要做的事情

if update(userspwd)

begin

alter table t_users disable trigger [truuser] ---關閉t_users的觸發器

update dbo.t_users

set pwd=i.userspwd

from dbo.t_users br , deleted d ,inserted i --deleted和inserted臨時表

where br.yhbm=d. usersname

alter table t_users enable trigger [truuser]

end

alter trigger [dbo].[truuser]

on [dbo].[t_users] --在tuser表中建立觸發器

for update --為什麼事件觸發

as --事件觸發後所要做的事情

if update(pwd)

begin

alter table tusers disable trigger [truuser2] --關閉tusers表中的觸發器

update dbo.tusers

set userspwd=i.pwd

from dbo.tusers br , deleted d ,inserted i --deleted和inserted臨時表

where br.usersname=d.yhbm

alter table tusers enable trigger [truuser2]

end

SQL建立DDL觸發器

當伺服器或資料庫中發生資料定義語言 ddl 事件時將被呼叫。如create,alter,drop等操作。如果要執行以下操作,可以使用ddl觸發器 防止對資料庫架構進行更改 希望資料庫中發生某些情況以響應資料庫架構中的更改 要記錄資料庫架構中的更改或事件 use xxhis kf go object ...

建立觸發器

視覺化資料庫工具 對於 microsoft sql server 資料庫,可以在 transact sql 中編寫觸發器,而對於 oracle 資料庫,則可以在 pl sql 中進行編寫。通過指定下列內容建立觸發器 建立觸發器 在 伺服器資源管理器 中,展開 表 資料夾。右擊要在其上建立觸發器的表名...

建立觸發器

create trigger trigger insert test1 on test2 after insert asbegin set nocount on added to prevent extra result sets from interfering with select state...