標籤:
-----觸發器------------------- ---觸發器:是一種特殊的預存程序,是在某個操作發生自動執行的一個操作select * from Q_user--------------insert 觸發器-------------- if(OBJECT_ID(‘tr_insert‘,‘tr‘)) is not null drop trigger tr_insert create trigger tr_insert on Q_user --基於哪個表建立的觸發器(就是哪個表在發生插入操作時自動觸發) for insert --做什麼操作時什麼時候自動發生 --操作upate insert delete --什麼時候 for 正在操作時發生, after 操作之後時發生,instead of 廢除當前的操作,執行觸發的操作 as --在插Q_user時,同時,插入userInformation -- declare @uid varchar(30),@uName varchar(30) --select @uid=uid,@uName=uName from inserted ----擷取 剛剛操作之後產生對應的行 ----(insert 代表觸發的基於表) --insert into userInformation(uid,name) values(@uid,@uName) ----也可以insert select 語句 insert into userInformation(uid,name) select uid,uName from inserted go --test insert into Q_user(uName,uPwd) values(‘觸發器‘,‘11111‘) select * from userInformation ----測試成功 ------update觸發器-------------- 在跟新Q_user標的同事跟新userInformation的 部分欄位 create trigger tr_update on Q_user after update as declare @uid varchar(30),@name varchar(30) select @uid=uid,@name=uName from inserted --擷取 剛剛操作之後產生對應的行 update userInformation set name=@name where uid=@uid go update Q_user set uName=‘更新觸發器‘ where uName=‘觸發器‘ select * from userInformation ----delete觸發器--------- 因為userInformation裡面的uid 是Q_user裡面的外鍵,在不使用串聯刪除的時候報錯 delete Q_user where uId=‘10002‘ --DELETE 語句與 REFERENCE 約束"DF_uid"衝突。該衝突發生於資料庫"Qzone",表"dbo.userInformation", column ‘uid‘ --級聯 就是當一個表和另一個表存在外鍵的關係時 就可以使用串聯更新與刪除了 --但前提是此表設定了級聯 --設定級聯的方法 建立串聯更新,, 在外鍵語句後面加 ON DELETE CASCADE ON UPDATE NO CASCADE, --foreign key (userId) references UserInfo(UserId) on delete cascade update Q_user set uName=‘串聯更新‘ where uName=‘更新觸發器‘ select * from Q_user ; select * from userInformation 用觸發器實現串聯刪除 ---遊標--------- ---是處理資料的一種方法,可以查看或者處理結果集中的資料 --利用遊標來查詢指定區間的資料 (比如查詢10-40直接的資料包含10-40) print (4.5)
SQL server從入門精通----觸發器