diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/.keep" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/.keep" deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/20220905-\345\261\200\351\203\250\345\217\230\351\207\217\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-05-\345\261\200\351\203\250\345\217\230\351\207\217\344\275\234\344\270\232.md" similarity index 100% rename from "03\351\231\210\346\236\253/\344\275\234\344\270\232/20220905-\345\261\200\351\203\250\345\217\230\351\207\217\344\275\234\344\270\232.md" rename to "03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-05-\345\261\200\351\203\250\345\217\230\351\207\217\344\275\234\344\270\232.md" diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/20220905-\345\267\245\347\250\213\346\225\260\346\215\256\345\272\223\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-05-\345\267\245\347\250\213\346\225\260\346\215\256\345\272\223\344\275\234\344\270\232.md" similarity index 100% rename from "03\351\231\210\346\236\253/\344\275\234\344\270\232/20220905-\345\267\245\347\250\213\346\225\260\346\215\256\345\272\223\344\275\234\344\270\232.md" rename to "03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-05-\345\267\245\347\250\213\346\225\260\346\215\256\345\272\223\344\275\234\344\270\232.md" diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/20220906-\351\200\273\350\276\221\346\216\247\345\210\266\345\222\214\346\235\241\344\273\266\345\210\206\346\224\257\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-06-\351\200\273\350\276\221\346\216\247\345\210\266\345\222\214\346\235\241\344\273\266\345\210\206\346\224\257\344\275\234\344\270\232.md" similarity index 100% rename from "03\351\231\210\346\236\253/\344\275\234\344\270\232/20220906-\351\200\273\350\276\221\346\216\247\345\210\266\345\222\214\346\235\241\344\273\266\345\210\206\346\224\257\344\275\234\344\270\232.md" rename to "03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-06-\351\200\273\350\276\221\346\216\247\345\210\266\345\222\214\346\235\241\344\273\266\345\210\206\346\224\257\344\275\234\344\270\232.md" diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/20220907-\345\255\220\346\237\245\350\257\242\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-07-\345\255\220\346\237\245\350\257\242\344\275\234\344\270\232.md" similarity index 100% rename from "03\351\231\210\346\236\253/\344\275\234\344\270\232/20220907-\345\255\220\346\237\245\350\257\242\344\275\234\344\270\232.md" rename to "03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-07-\345\255\220\346\237\245\350\257\242\344\275\234\344\270\232.md" diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/20220915-\350\247\206\345\233\276\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-15-\350\247\206\345\233\276\344\275\234\344\270\232.md" similarity index 100% rename from "03\351\231\210\346\236\253/\344\275\234\344\270\232/20220915-\350\247\206\345\233\276\344\275\234\344\270\232.md" rename to "03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-15-\350\247\206\345\233\276\344\275\234\344\270\232.md" diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/20220919-\344\272\213\345\212\241\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-19-\344\272\213\345\212\241\344\275\234\344\270\232.md" similarity index 100% rename from "03\351\231\210\346\236\253/\344\275\234\344\270\232/20220919-\344\272\213\345\212\241\344\275\234\344\270\232.md" rename to "03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-19-\344\272\213\345\212\241\344\275\234\344\270\232.md" diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/20220920-\346\270\270\346\240\207\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-20-\346\270\270\346\240\207\344\275\234\344\270\232.md" similarity index 100% rename from "03\351\231\210\346\236\253/\344\275\234\344\270\232/20220920-\346\270\270\346\240\207\344\275\234\344\270\232.md" rename to "03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-20-\346\270\270\346\240\207\344\275\234\344\270\232.md" diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/20220921-\345\207\275\346\225\260\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-21-\345\207\275\346\225\260\344\275\234\344\270\232.md" similarity index 100% rename from "03\351\231\210\346\236\253/\344\275\234\344\270\232/20220921-\345\207\275\346\225\260\344\275\234\344\270\232.md" rename to "03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-21-\345\207\275\346\225\260\344\275\234\344\270\232.md" diff --git "a/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-26-\345\255\230\345\202\250\350\277\207\347\250\213\344\275\234\344\270\232.md" "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-26-\345\255\230\345\202\250\350\277\207\347\250\213\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..79c406c78edfe360af4e3ea8366b4e2cd7fa2489 --- /dev/null +++ "b/03\351\231\210\346\236\253/\344\275\234\344\270\232/2022-09-26-\345\255\230\345\202\250\350\277\207\347\250\213\344\275\234\344\270\232.md" @@ -0,0 +1,105 @@ +select * from AccountInfo --个人信息 +select * from BankCard --银行卡信息 +select * from CardStateChange --银行卡状态更改表 +select * from CardTransfer --转账表 +select * from CardExchange --交易记录 + +--1. 定义存储过程实现查询出账户余额最低的银行卡账户信息,显示银行卡号,姓名,账户余额 + +```sql +go +create proc proc_min +as +select top 1 cardno,RealName,CardMoney from AccountInfo a join BankCard b on a.AccountId=b.AccountId order by CardMoney +go + +exec proc_min +``` + +--2. 模拟银行卡存钱操作,传入银行卡号,存钱金额,实现存钱操作 + +```sql +go +create proc proc_inbank +@no varchar(20),@money money +as +update BankCard set CardMoney=CardMoney+@money where CardNo=@no +insert CardExchange values(@no,@money,0,GETDATE()) +go + +exec proc_inbank '6225125478544587',500 +``` + +--3. 模拟银行卡取钱操作,传入银行卡号,取钱金额,实现取钱操作,取钱成功,返回1,取钱失败返回-1 + +```sql +go +create proc proc_outbank +@no varchar(20),@money money +as +declare @moneys money +select @moneys=CardMoney from BankCard where CardNo=@no +if(@money> @moneys) +begin +return -1 +end +else +begin +update BankCard set CardMoney=CardMoney-@money where CardNo=@no +insert CardExchange values(@no,0,@money,GETDATE()) +return 1 +end +go + +declare @i int +exec @i= proc_outbank '6225125478544587',500 +print @i +``` + +--4. **查询出某时间段的银行存取款信息以及存款总金额**,取款总金额, +--传入开始时间,结束时间,显示存取款交易信息的同时,返回存款总金额,取款总金额。 + +```sql +go +create proc proc_moneyinbank +@bgindate date,@enddate date,@inbank money output,@outbank money output +as +select * from CardExchange where ExchangeTime between @bgindate and @enddate +select @inbank=sum(MoneyInBank),@outbank=sum(MoneyOutBank) from CardExchange where ExchangeTime between @bgindate and @enddate +go + +declare @inbank money ,@outbank money ,@x varchar(20) +exec proc_moneyinbank '2022-09-01','2022-09-30',@inbank output,@outbank output +print '存款金额'+cast(@inbank as varchar(20))+'取款金额'+cast(@outbank as varchar(20)) +--5. **密码升级**,传入用户名和密码,如果用户名密码正确,并且密码长度<8,自动升级成8位密码 +go +create proc proc_pass +@no varchar(20),@pass varchar(20) +as +declare @i varchar(20) +select @i=a.AccountId from AccountInfo a join BankCard b on a.AccountId=b.AccountId where AccountCode=@no and CardPwd=@pass +if @i=null + begin + raiserror('账号或密码错误',16,1) + end +else + begin + if len(@pass)<8 + begin + declare @xx varchar(20) + select @xx=floor(rand()*10) + while len(@pass)<8 + begin + set @pass=@pass+@xx + end + update BankCard set CardPwd=@pass where AccountId=@i + end + end + +go + + +exec proc_pass '420107198905064135','123456' +``` + +--(提示:随机生成 0-9 的整数: float(rand()*10)) rand():随机生成0.0-1.0的小数 float:向下取整) \ No newline at end of file diff --git "a/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-09-27-\350\247\246\345\217\221\345\231\250\347\254\224\350\256\260.md" "b/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-09-27-\350\247\246\345\217\221\345\231\250\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..a7b21cdaadad271ed2ae3df3ab72b4f04247d415 --- /dev/null +++ "b/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-09-27-\350\247\246\345\217\221\345\231\250\347\254\224\350\256\260.md" @@ -0,0 +1,44 @@ +# 触发器 + +## 触发器与存储过程的区别 +``` +触发器与存储过程的区别是运行方式的不同,触发器不能执行excute语句,触发器是用户在执行T-SQL语句时,自动触发执行。而存储过程需要用户,应用程序或者触发器来显示地调用并执行. +``` + +## 触发器作用 +``` +1、强制数据库间的引用完整性 +2、级联修改数据库中所有相关的表,自动触发其它与之相关的操作 +3、跟踪变化,撤销或回滚违法操作,防止非法修改数据 +4、返回自定义的错误消息,约束无法返回信息,而触发器可以 +5、触发器可以调用更多的存储过程 +``` + +## 触发器分类 +``` +1、insert触发器:向表中插入数据时被触发 +2、delete触发器: 从表中删除数据时被触发 +3、update触发器:修改表中的数据时被触发 +``` + +## inserted表 和 deleted表 对照 +| 修改操作记录 | inserted表 | deleted表 | +|-|-|-| +| 增加(insert)记录 | 存放新增记录 | 无 | +| 删除(deleted)记录 | 无 | 存放被删除的记录 | +| 修改(update)记录 | 存放更新后记录 | 存放更新前记录 | + +## 工作原理 + +![图裂了](./img/触发器工作原理.png) + +## 创建 +``` +create trigger <触发器名称> +on <数据表> + +as +begin + sql语句 +end +```