① sql 如何禁用觸發器
--禁用
alter table [tablename]
disable all trigger
--恢復
alter table [tablename]
enable all trigger
詳細語法,請F1查詢幫助
② 如何設置某條sql語句執行的時候不執行觸發器
你這個是FOR觸發器,在語句後面執行,inserted和ssss表中的數據已經是一樣的了,你下面兩句得到的結果都是修改後的值:
select
@sname=name,@ssr=sr
from
inserted
select
@ssr2=sr
from
ssss
where
name=@sname
改成:
1
2
3
4
5
6
7
8
9
10
11
12
13
create
trigger
cf_lz
on
ssss
for
insert,update
as
declare
@sname
nvarchar(10),@ssr
nvarchar(10),@ssr2
nvarchar(10)
select
@sname=name,@ssr=sr
from
deleted
select
@ssr2=sr
from
ssss
where
name=@sname
print
len(@ssr)
print
@ssr
if(len(@ssr2)>0
and
len(@ssr)>0)
begin
print
1
rollback
tran
--
rollback
tran
end