diff --git "a/39\351\231\206\345\273\272\351\224\213/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250.sql" "b/39\351\231\206\345\273\272\351\224\213/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250.sql" new file mode 100644 index 0000000000000000000000000000000000000000..f88680d36674d48f78b958fad989785ce32ec383 --- /dev/null +++ "b/39\351\231\206\345\273\272\351\224\213/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250.sql" @@ -0,0 +1,54 @@ +use master +--(1)假设有部门表和员工表,在添加员工的时候,该员工的部门编号如果在部门表中找不到 +--,则自动添加部门信息,部门名称为"新部门"。 +select * from Department +select * from People +go +create trigger tri_CheckSalary +on people for insert +as + if not exists(select * from Department where DepartmentId=(select DepartmentId from inserted)) + insert into Department(DepartmentId,DepartmentName) + values ((select DepartmentId from inserted),'新部门') +go + insert into People(DepartmentId,PeopleName,PeopleSex,PeopleSalary) values('005','赵云','男',9000) + +drop trigger tri_CheckSalary + + +--(2)触发器实现,删除一个部门的时候将部门下所有员工全部删除。 +go +create trigger tri_DeletePeopleByDepartment +on Department for delete +as + delete from People where People.DepartmentId=(select DepartmentId from deleted) +go + delete Department where DepartmentId='005' +drop trigger tri_DeletePeopleByDepartment + + +--(3)创建一个触发器,删除一个部门的时候判断该部门下是否有员工,有则不删除,没有则删除。 +go +create trigger tri_DeleteDepartment +on Department Instead of delete +as + if not exists(select * from People where DepartmentId=(select DepartmentId from deleted)) + begin + delete from Department where DepartmentId=(select DepartmentId from deleted) + end +go + delete from Department where DepartmentId='005' + +drop trigger tri_DeleteDepartment + +--(4)修改一个部门编号之后,将该部门下所有员工的部门编号同步进行修改 +go +create trigger tri_PrintSalary +on Department for update +as + update People set DepartmentId=(select DepartmentId from inserted) + where DepartmentId=(select DepartmentId from deleted) + +go +update Department set DepartmentId = '002' where DepartmentId='001' +drop trigger tri_PrintSalary \ No newline at end of file diff --git "a/39\351\231\206\345\273\272\351\224\213/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\347\254\224\350\256\260\350\247\246\345\217\221\345\231\250.md" "b/39\351\231\206\345\273\272\351\224\213/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\347\254\224\350\256\260\350\247\246\345\217\221\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..e8414ffcf5e51fb41a3016ac0b9988466046c729 --- /dev/null +++ "b/39\351\231\206\345\273\272\351\224\213/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232\350\247\246\345\217\221\345\231\250/2022-10-10\347\254\254\345\215\201\344\272\214\346\254\241\347\254\224\350\256\260\350\247\246\345\217\221\345\231\250.md" @@ -0,0 +1,34 @@ +瑙﹀彂鍣紙trigger锛 + +浠涔堟槸瑙﹀彂鍣細 insert --銆 涓绯诲垪闅忕潃鎻掑叆鎿嶄綔鑷姩鎵ц鐨剆ql璇彞闆嗗悎 + 瑙﹀彂鍣紙 trigger 锛夋槸浣滀负瀵规暟鎹簱淇敼鐨勮繛甯︽晥鏋滆岀敱绯荤粺鑷姩鎵ц鐨勪竴鏉¤鍙ャ傚畠鏄竴绉嶇壒娈婄殑瀛樺偍杩囩▼銆備篃鏄竴涓簨鍔★紙鍙互鍥炴粴锛夈備负浜嗗畾涔変竴涓紝鎴戜滑蹇呴』锛 +- 鎸囨槑浠涔堟椂鍊欐墽琛岃Е鍙戝櫒銆傝繖琚媶鍒嗕负寮曡捣瑙﹀彂鍣ㄨ妫娴嬬殑涓涓簨浠惰Е鍙戝櫒缁х画鎵ц鎵蹇呴』婊¤冻鐨勪竴涓潯浠躲 +- 鎸囨槑褰撹Е鍙戝櫒鎵ц鏃舵墍閲囧彇鐨勫姩浣. + + + 瑙﹀彂鍣ㄥ垎绫 +鍒嗕负 DML瑙﹀彂鍣 +DML瑙﹀彂鍣 锛 澧炲垹鏀 +after瑙﹀彂鍣細 澧炲垹鏀 涔嬪悗鎵ц鐨 +after瑙﹀彂鍣ㄤ富瑕佺敤浜庯細insert锛寀pdate锛宒elete +instead of 瑙﹀彂鍣 锛 澧炲垹鏀 涔嬪墠妫鏌ョ殑 + +鍒涘缓瑙﹀彂鍣ㄧ殑璇彞 +CREATE TRIGGER <瑙﹀彂鍣ㄥ悕绉> +ON table_name +FOR [DELETE, INSERT, UPDATE] +AS + T-SQL璇彞 +GO +--WITH ENCRYPTION琛ㄧず鍔犲瘑瑙﹀彂鍣ㄥ畾涔夌殑SQL鏂囨湰 +--DELETE, INSERT, UPDATE鎸囧畾瑙﹀彂鍣ㄧ殑绫诲瀷 + 鎬荤粨 + + 1.鎻掑叆鎿嶄綔锛圛nsert锛 +*\*inserted 琛╘*鏈夋暟鎹紝*\*deleted 琛╘*鏃犳暟鎹 + +2.鍒犻櫎鎿嶄綔锛圖elete锛 +*\*inserted 琛╘*鏃犳暟鎹紝*\*deleted 琛╘*鏈夋暟鎹 + +3.鏇存柊鎿嶄綔锛圲pdate锛 +*\*inserted 琛╘*鏈夋暟鎹紙鏂版暟鎹級锛*\*deleted 琛╘*鏈夋暟鎹紙鏃ф暟鎹級 \ No newline at end of file