資料庫SQL 批量更新促髮器游標的方法

2021-07-25 18:56:28 字數 2328 閱讀 8548

--停止:

alter  table  table_example  disable  trigger  trig_example  

--啟用:

alter  table  table_example  enable  trigger  trig_example

-- table_example 表名     trig_example 觸發器名

--停止:此表所有觸發器

alter  table  table_example  disable  trigger  all

--啟用:此表所有觸發器

alter  table  table_example  enable  trigger  all

if exists(select name from sysobjects where name='tr_bd_item_infommsy_delete' and type='tr')

drop trigger tr_bd_item_infommsy_delete

gocreate trigger tr_bd_item_infommsy_delete on t_bd_item_info with encryption 

after delete 

asbegin

--用游標,乙個乙個處理 

declare @fid varchar(100) 

declare tmpgoods cursor for select item_no from deleted 

open tmpgoods 

fetch tmpgoods into @fid 

while @@fetch_status=0 

begin 

--操作語句 update t1 set t1_2='32h4' where id=@fid 

fetch  tmpgoods into @fid 

end 

close tmpgoods 

deallocate tmpgoods 

end   

--------------------------------------

create trigger [dbo].[up_t] 

on [dbo].[t1] 

for update 

as begin 

if update(t1_1) 

begin 

--用游標,乙個乙個處理 

declare @fid int 

declare tmpgoods cursor for select id from deleted 

open tmpgoods 

fetch next from tmpgoods into @fid 

while @@fetch_status=0 

begin 

--操作語句 

update t1 set t1_2='32h4' where id=@fid 

fetch next from tmpgoods into @fid 

end 

close tmpgoods 

deallocate tmpgoods 

end 

end---建立觸發器插入操作【tr_aatestbale_inert觸發器名,aatestbale原有表名,bbtestbale插入新的表】

--案例①:當aatestbale有插入資料時,就會更新另外定義的bbtestbale表的資料

if exists (select name from sysobjects

where name = 'tr_aatestbale' and type = 'tr')

drop trigger tr_aatestbale

create  trigger  tr_aatestbale  --修改觸發器altertrigger

on  aatestbale

after insert--如是更新時除非此觸發器after update ,刪除after delete (例如是插入時會促發此觸發器)

as begin

set nocount on;

----先盤點是否有插入重複,如沒有則促發此觸發器時,

if not exists (select 1 from bbtestbale where item_no = (select item_no from inserted))

begin

insert into bbtestbale(item_no,item_subno,item_name)

select item_no,item_subno,item_name from inserted 

end

資料庫 sql游標

1基本知識 declare 定義游標 open 開啟游標 fetch 從游標中取一行資料,每一次提取資料後,游標都指向結果集的下一行 close 關閉游標,使游標失去作用,並且結果集變成未定義,游標關閉可以重開 declare cursor v cursor is 定義游標 select from ...

SQL資料庫 游標

什麼是游標 如何使用游標 游標的作用 游標的優缺點 游標是sql 的一種資料訪問機制。可以將游標簡單的看成是查詢的結果集的乙個指標,可以根據需要在結果集上面來回滾動,瀏覽需要的資料。普通游標 declare username varchar 20 userid varchar 100 declare...

批量更新資料庫

前言 最近做了個專案 把txt檔案中的資源資訊全量更新到資料庫中,拿到這個專案後,我首先考慮到效能問題應該是個大問題,於是想到了用批處理解決,但是批處理不能支援事物回滾,且只能一條一條sql執行,效率雖然比直接更新資料庫要快,且不占用cpu。經諮詢有一種更好的方法,就是先用c 自帶提供的方法sqlb...