diff --git "a/45\346\235\216\346\266\233/\344\275\234\344\270\232/\345\207\275\346\225\260\344\275\234\344\270\232.md" "b/45\346\235\216\346\266\233/\344\275\234\344\270\232/20220921\345\207\275\346\225\260\344\275\234\344\270\232.md" similarity index 100% rename from "45\346\235\216\346\266\233/\344\275\234\344\270\232/\345\207\275\346\225\260\344\275\234\344\270\232.md" rename to "45\346\235\216\346\266\233/\344\275\234\344\270\232/20220921\345\207\275\346\225\260\344\275\234\344\270\232.md" diff --git "a/45\346\235\216\346\266\233/\344\275\234\344\270\232/20220927\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.md" "b/45\346\235\216\346\266\233/\344\275\234\344\270\232/20220927\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..1eb73b210ff5471bcfef71307090ea1d8732bb06 --- /dev/null +++ "b/45\346\235\216\346\266\233/\344\275\234\344\270\232/20220927\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.md" @@ -0,0 +1,67 @@ +```sql + +select * from Department +select * from People + + +--(1)假设有部门表和员工表,在添加员工的时候,该员工的部门编号如果在部门表中找不到,则自动添加部门信息,部门名称为"新部门"。 +go +create trigger tri_d1 +on people after insert +as + + if (select DepartmentId from inserted ) not in(select DepartmentId from Department) + begin + declare @Id varchar(20) + set @Id=(select DepartmentId from inserted) + insert Department values(@Id,'新部门') + end + +go + +insert People values ('009','赵云','男','10000') + +--(2)触发器实现,删除一个部门的时候将部门下所有员工全部删除。 +go +create trigger tri_de +on department after delete +as + delete from People where DepartmentId=(select DepartmentId from deleted) +go + +delete from Department where DepartmentName='市场部' + + +--(3)创建一个触发器,删除一个部门的时候判断该部门下是否有员工,有则不删除,没有则删除。 +go +create trigger tri_d3 +on department after delete +as +if exists(select DepartmentId from People where DepartmentId in (select DepartmentId from deleted) ) + begin + rollback transaction + end + +go + +delete from Department where DepartmentName='人事部' +--(4)修改一个部门编号之后,将该部门下所有员工的部门编号同步进行修改 +go +create trigger tri_d4 +on department after update +as + declare @Id varchar(10)= (select DepartmentId from inserted) + declare @Id2 varchar(10)=(select DepartmentId from deleted) + + if update(DepartmentId) + begin + update People set DepartmentId=@Id from inserted + where People.DepartmentId=@Id2 + end + +go + + +update Department set DepartmentId='008' where DepartmentId='001' +``` + diff --git "a/45\346\235\216\346\266\233/\347\254\224\350\256\260/220926\350\247\246\345\217\221\345\231\250.md" "b/45\346\235\216\346\266\233/\347\254\224\350\256\260/220926\350\247\246\345\217\221\345\231\250.md" index 83c4c329fb020fe741d2f051bde70a2d8b5cd5f1..fd5e92291e0cf4be1fd68b34681485a7da08b707 100644 --- "a/45\346\235\216\346\266\233/\347\254\224\350\256\260/220926\350\247\246\345\217\221\345\231\250.md" +++ "b/45\346\235\216\346\266\233/\347\254\224\350\256\260/220926\350\247\246\345\217\221\345\231\250.md" @@ -9,7 +9,7 @@ on table_name for each row --行级触发器 begin -​ tirgger_stmt; +​ trigger_stmt; end ```