diff --git "a/05\345\215\240\345\277\227\346\226\260/10.10/.keep" "b/05\345\215\240\345\277\227\346\226\260/10.10/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/05\345\215\240\345\277\227\346\226\260/10.10/\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.sql" "b/05\345\215\240\345\277\227\346\226\260/10.10/\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.sql" new file mode 100644 index 0000000000000000000000000000000000000000..e81121b0646231df9bdb18b4efa395159d06484c --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/10.10/\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.sql" @@ -0,0 +1,54 @@ +-(1)假设有部门表和员工表,在添加员工的时候,该员工的部门编号如果在部门表中找不到, +--则自动添加部门信息,部门名称为"新部门"。 +create trigger tri_AddPeople +on People for insert +as +declare @DepartmentId int +select @DepartmentId = DepartmentId from People +if not exists(select * from Department where DepartmentId = @DepartmentId) + insert into Department values(@DepartmentId,'新部门') + +insert into People values('007','呼呼','男',15000) +go +--(2)触发器实现,删除一个部门的时候将部门下所有员工全部删除。 +create trigger tri_Delete +on Department for delete +as +delete People where DepartmentId = (select DepartmentId from deleted) +go +delete Department where DepartmentId = 1 +go + +--(4)修改一个部门编号之后,将该部门下所有员工的部门编号同步进行修改 +create trigger tri_UpdateDepartment +on Department for update +as +declare @Old_DepartmentId int ,@New_DepartmentId int +select @Old_DepartmentId = (select DepartmentId from deleted) +select @New_DepartmentId = (select DepartmentId from inserted) +update People set DepartmentId = @New_DepartmentId where DepartmentId = @Old_DepartmentId + +update Department set DepartmentId = '003' where DepartmentId = '001' + +--总经办-1000 市场部员工工资-2000 +--用存储过程和游标 +declare cur_PayCut cursor scroll +for select DepartmentId from Department + +go +create proc proc_PayCut +as +begin + open cur_PayCut + declare @DepartmentId int,@money money = 1000 + fetch first from cur_PayCut into @DepartmentId + while(@@FETCH_STATUS = 0) + begin + update People set PeopleSalary -= @money where DepartmentId = @DepartmentId + set @money += 1000 + fetch next from cur_PayCut into @DepartmentId + end + close cur_PayCut +end + +exec proc_PayCut \ No newline at end of file diff --git "a/05\345\215\240\345\277\227\346\226\260/10.10/\350\247\246\345\217\221\345\231\250\347\254\224\350\256\260.txt" "b/05\345\215\240\345\277\227\346\226\260/10.10/\350\247\246\345\217\221\345\231\250\347\254\224\350\256\260.txt" new file mode 100644 index 0000000000000000000000000000000000000000..7d393bdb8b903957cf8173a1de40eef36f5fd251 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/10.10/\350\247\246\345\217\221\345\231\250\347\254\224\350\256\260.txt" @@ -0,0 +1,21 @@ +瑙﹀彂鍣紙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 琛ㄦ湁鏁版嵁锛宒eleted 琛ㄦ棤鏁版嵁 + +2.鍒犻櫎鎿嶄綔锛圖elete锛 inserted 琛ㄦ棤鏁版嵁锛宒eleted 琛ㄦ湁鏁版嵁 + +3.鏇存柊鎿嶄綔锛圲pdate锛 inserted 琛ㄦ湁鏁版嵁锛堟柊鏁版嵁锛夛紝deleted 琛ㄦ湁鏁版嵁锛堟棫鏁版嵁锛 \ No newline at end of file