diff --git "a/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.10.10.sql" "b/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.10.10.sql" new file mode 100644 index 0000000000000000000000000000000000000000..5cef6fc07e2662feccdf79fead3905a7a9c4566e --- /dev/null +++ "b/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.10.10.sql" @@ -0,0 +1,38 @@ +select * from Department +select * from People +go +--(1)假设有部门表和员工表,在添加员工的时候,该员工的部门编号 +-- 如果在部门表中找不到,则自动添加部门信息,部门名称为"新部门"。 +create trigger tri_departmentName +on people for insert +as +declare @dep_id varchar(5) + select @dep_id=DepartmentId from inserted + if(@dep_id not in (select DepartmentId from Department)) + begin + insert into Department values(@dep_id,'新部门') + end + go + + insert into People values('003','张三','男',3364) + +-- drop trigger tri_departmentName +go +--(2)触发器实现,删除一个部门的时候将部门下所有员工全部删除。 +create trigger tri_depdelete +on department for delete +as + delete from People where DepartmentId=(select DepartmentId from deleted) + go +delete from Department where DepartmentId='003' +drop trigger tri_depdelete +go +--(4)修改一个部门编号之后,将该部门下所有员工的部门编号同步进行修改 +create trigger tri_update +on department for update +as + update People set DepartmentId=(select DepartmentId from inserted) + where DepartmentId=(select DepartmentId from deleted) + go +update Department set DepartmentId='003' where DepartmentId='001' +drop trigger tri_update \ No newline at end of file diff --git "a/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.10.10.md" "b/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.10.10.md" new file mode 100644 index 0000000000000000000000000000000000000000..2044fe96e38923836dcc76123609ba64f9af28a3 --- /dev/null +++ "b/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.10.10.md" @@ -0,0 +1,47 @@ +### SQL瑙﹀彂鍣ㄧ殑浣跨敤鍙婅娉 + +##### 瀹氫箟锛 浣曚负瑙﹀彂鍣紵鍦⊿QL Server閲岄潰涔熷氨鏄鏌愪竴涓〃鐨勪竴瀹氱殑鎿嶄綔锛岃Е鍙戞煇绉嶆潯浠讹紝浠庤屾墽琛岀殑涓娈电▼搴忋傝Е鍙戝櫒鏄竴涓壒娈婄殑瀛樺偍杩囩▼銆 + +甯歌鐨勮Е鍙戝櫒鏈変笁绉岲ML瑙﹀彂鍣 锛 澧炲垹鏀 + +after瑙﹀彂鍣紙 澧炲垹鏀 涔嬪悗鎵ц鐨 锛 + +after瑙﹀彂鍣ㄤ富瑕佺敤浜庯紙insert锛寀pdate锛宒elete锛 + +instead of 瑙﹀彂鍣 锛堝鍒犳敼 涔嬪墠妫鏌ョ殑锛 + +##### + + **瑙﹀彂鍣**锛 trigger 锛夋槸浣滀负**瀵规暟鎹簱淇敼鐨勮繛甯︽晥鏋**鑰**鐢辩郴缁熻嚜鍔ㄦ墽琛**鐨勪竴鏉¤鍙ャ傚畠鏄竴绉嶇壒娈婄殑**瀛樺偍杩囩▼**銆備篃鏄竴涓**浜嬪姟**锛堝彲浠ュ洖婊氾級 + +##### 鎿嶄綔锛 + +```sql +CREATE TRIGGER <瑙﹀彂鍣ㄥ悕绉> + +ON table_name +FOR [DELETE, INSERT, UPDATE] + +AS + + T-SQL璇彞 (inserted,deleted,update娌℃湁upadated) + +GO +--WITH ENCRYPTION琛ㄧず鍔犲瘑瑙﹀彂鍣ㄥ畾涔夌殑SQL鏂囨湰 + +--DELETE, INSERT, UPDATE鎸囧畾瑙﹀彂鍣ㄧ殑绫诲瀷 +``` + + + + 1.鎻掑叆鎿嶄綔锛圛nsert锛 +inserted 琛ㄧず鎻掑叆鍚庣殑鏁版嵁 + +2.鍒犻櫎鎿嶄綔锛圖elete锛 +deleted 琛ㄧず鍒犻櫎鍚庣殑鏁版嵁 + +3.鏇存柊鎿嶄綔锛圲pdate锛 + +update 娌℃湁updated 鎵浠ョ敤inserted琛ㄧず鏂版暟鎹紝deleted琛ㄧず鏃ф暟鎹 + +***\*inserted 琛╘****鏈夋暟鎹紙鏂版暟鎹級锛***\*deleted 琛╘****鏈夋暟鎹紙鏃ф暟鎹級 \ No newline at end of file