diff --git "a/30\351\273\204\351\233\204/10.10/.keep" "b/30\351\273\204\351\233\204/10.10/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/30\351\273\204\351\233\204/10.10/SQLQuery1.sql" "b/30\351\273\204\351\233\204/10.10/SQLQuery1.sql" new file mode 100644 index 0000000000000000000000000000000000000000..7c52f6b9555acbc5b851b9f8452d223f4802c276 --- /dev/null +++ "b/30\351\273\204\351\233\204/10.10/SQLQuery1.sql" @@ -0,0 +1,32 @@ +--(1)假设有部门表和员工表,在添加员工的时候,该员工的部门编号如果在部门表中找不到,则自动添加部门信息,部门名称为"新部门"。 +select * from Department +select * from People +create trigger tri_insert +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),'新部门') + + insert into People(DepartmentId,PeopleName,PeopleSex,Peoplesalary) values ('005','赵云','男','3000.00') + drop trigger tri_insert + + + + +--(2)触发器实现,删除一个部门的时候将部门下所有员工全部删除。 +create trigger tri_out +on Department for delete +as + delete from People where DepartmentId=(select DepartmentId from inserted ) +delete from Department where DepartmentId='004' +--**(3)创建一个触发器,删除一个部门的时候判断该部门下是否有员工,有则不删除,没有则删除。** +create +--(4)修改一个部门编号之后,将该部门下所有员工的部门编号同步进行修改 + +create trigger tri_updata +on Department for update +as + update Department set DepartmentId=(select DepartmentId from inserted) + where DepartmentId=(select DepartmentId from inserted) + +update Department set DepartmentId = '005'where DepartmentId ='001' \ No newline at end of file diff --git "a/30\351\273\204\351\233\204/10.10/SQL\350\247\246\345\217\221\345\231\250\347\232\204\344\275\277\347\224\250\345\217\212\350\257\255\346\263\225.md" "b/30\351\273\204\351\233\204/10.10/SQL\350\247\246\345\217\221\345\231\250\347\232\204\344\275\277\347\224\250\345\217\212\350\257\255\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..bd932c2acb61cc29b71690047d7c2633ae0c4a1f --- /dev/null +++ "b/30\351\273\204\351\233\204/10.10/SQL\350\247\246\345\217\221\345\231\250\347\232\204\344\275\277\347\224\250\345\217\212\350\257\255\346\263\225.md" @@ -0,0 +1,36 @@ +SQL触发器的使用及语法 +定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 +常见的触发器有三种DML触发器 : 增删改 + +after触发器( 增删改 之后执行的 ) + +after触发器主要用于(insert,update,delete) + +instead of 触发器 (增删改 之前检查的) + +触发器( trigger )是作为对数据库修改的连带效果而由系统自动执行的一条语句。它是一种特殊的存储过程。也是一个事务(可以回滚) + +操作: +CREATE TRIGGER <触发器名称> + +ON table_name +FOR [DELETE, INSERT, UPDATE] + +AS + + T-SQL语句 (inserted,deleted,update没有upadated) + +GO +--WITH ENCRYPTION表示加密触发器定义的SQL文本 + +--DELETE, INSERT, UPDATE指定触发器的类型 +1.插入操作(Insert) inserted 表示插入后的数据 + +2.删除操作(Delete) deleted 表示删除后的数据 + +3.更新操作(Update) + +update 没有updated 所以用inserted表示新数据,deleted表示旧数据 + +****inserted 表*有数据(新数据),*deleted 表****有数据(旧数据) +