diff --git "a/06\351\231\210\346\242\205\351\246\231/\344\275\234\344\270\232/2022.10.09\344\275\234\344\270\232.sql" "b/06\351\231\210\346\242\205\351\246\231/\344\275\234\344\270\232/2022.10.09\344\275\234\344\270\232.sql" new file mode 100644 index 0000000000000000000000000000000000000000..d87fa778f225389a0d6f8d116c13097215a33dce --- /dev/null +++ "b/06\351\231\210\346\242\205\351\246\231/\344\275\234\344\270\232/2022.10.09\344\275\234\344\270\232.sql" @@ -0,0 +1,46 @@ +use test_trigger +go + +select * from Department +select * from People +--(1)假设有部门表和员工表,在添加员工的时候,该员工的部门编号如果在部门表中找不到, +-- 则自动添加部门信息,部门名称为"新部门"。 +go +-- drop trigger tri_insert +create trigger tri_insert +on People for insert +as + declare @code varchar(10) + set @code = (select DepartmentId from inserted) + if exists(select DepartmentId from inserted where DepartmentId not in(select DepartmentId from deleted)) + begin + insert into Department values(@code,'新部门') + end + +insert into People values('002','莉莉','女',114554) +-- delete from People where PeopleName = '莉莉' + + +--(2)触发器实现,删除一个部门的时候将部门下所有员工全部删除。 +-- insert into Department values('007','测试部') +-- insert into People values('007','jojo','男',114514) +go +create trigger tri_del +on Department for delete +as + delete from People where DepartmentId = (select DepartmentId from deleted) + +delete from Department where DepartmentId = '007' + + +--(4)修改一个部门编号之后,将该部门下所有员工的部门编号同步进行修改 +select * from Department +select * from People +go +create trigger tri_update +on Department for update +as + update People set DepartmentId = (select DepartmentId from inserted) + where DepartmentId = (select DepartmentId from deleted) + +update Department set DepartmentId = '007' where DepartmentId = '001' \ No newline at end of file diff --git "a/06\351\231\210\346\242\205\351\246\231/\347\254\224\350\256\260/2022.10.09\350\247\246\345\217\221\345\231\250\357\274\210trigger\357\274\211.md" "b/06\351\231\210\346\242\205\351\246\231/\347\254\224\350\256\260/2022.10.09\350\247\246\345\217\221\345\231\250\357\274\210trigger\357\274\211.md" new file mode 100644 index 0000000000000000000000000000000000000000..ad2181c34770af75892cc4b8443ad7fcf51109eb --- /dev/null +++ "b/06\351\231\210\346\242\205\351\246\231/\347\254\224\350\256\260/2022.10.09\350\247\246\345\217\221\345\231\250\357\274\210trigger\357\274\211.md" @@ -0,0 +1,31 @@ +2022.10.09瑙﹀彂鍣紙trigger锛 + +DML瑙﹀彂鍣細澧炲垹鏀 + +afte锛氬鍒犳敼涔嬪悗鎵ц鐨勪箣鍓嶆鏌 + +inserted锛氬彈褰卞搷琛屾暟鐨勪腑鐨勭粨鏋滈泦 + +``` +creat trigger 鍚嶅瓧 +on 琛ㄥ悕 for insert +as +澹版槑1 +澹版槑2 +select锛堟煡璇級 +print +insert into锛堟柊澧烇級 +update锛堜慨鏀癸級 +drop trigger 鍚嶅瓧锛堝垹闄わ級 +``` + +inserted琛細鐢ㄤ簬瀛樺偍insert鍜寀pdate璇彞鎵褰卞搷鐨勮鐨勫壇鏈 + +1.鎻掑叆鎿嶄綔锛圛nsert锛 +inserted 琛 鏈夋暟鎹紝deleted 琛ㄦ棤鏁版嵁 + +2.鍒犻櫎鎿嶄綔锛圖elete锛 +inserted 琛ㄦ棤鏁版嵁锛宒eleted 琛ㄦ湁鏁版嵁 + +3.鏇存柊鎿嶄綔锛圲pdate锛 +inserted 琛ㄦ湁鏁版嵁锛堟柊鏁版嵁锛,deleted 琛 鏈夋暟鎹紙鏃ф暟鎹級 \ No newline at end of file