k3 物料收发明细表sql_SQL触发器及存储过程学习,一个门外汉的学习笔记

本文介绍了SQL触发器的基础知识,包括触发器概念、类型、中间表和语法结构,并通过在金蝶K3系统中创建物料收发明细表的触发器为例,进行了初步测试。同时,探讨了SQL相关的表循环、函数(标量与表格值)和存储过程的应用,提供了一个门外汉学习数据库深入操作的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个文章的起源是:金蝶k3wise采购申请单审核时需要自动校验库存,并且生成mto调整单;

直接导致:一个从未写过触发器的门外汉,得到了一点提高;

这篇文章适合像我这样只会在数据库里面进行增删改查,但是还想在数据库中更深入一下的童鞋,通过学习可以初步掌握触发器和存储过程的使用。

文中的示例都是建立在实际项目上的,可能不太适合练习。如果有合适的时间,并且还有一些阅读量的话,我会考虑把案例做成标准的数据。

如果你不慎看到这篇文章,但是对数据库还不熟悉,那么你可以先学习一下基本的语法:SQL语法学习 - 不用真的记不住

一、触发器的一些基础

1.1 触发器的概念

当在`表`中`插入、更新、删除记录`时,`触发`一个或一系列的SQL语句

1.2 触发器类型

  • 1.After触发器

当数据表执行插入、更新、删除操作之后,After触发器才被触发。After触发器只能用于数据表,不可用于视图。

分为:

- after insert触发器

- after update触发器

- after delete触发器

- for insert触发器

- for update触发器

- for delete触发器

  • 2.Instead Of 触发器

当数据表执行插入、更新、删除操作,Instead Of触发器并不执行插入、更新、删除操作,而是替换成执行触发器本身的T-SQL逻辑。

分为:

- instead of insert触发器

- instead of update触发器

- instead of delete触发器

Instead Of触发器也可用于视图,用来扩展是多表连接的视图设计可以进行更新操作。视图设计是多表连接,是无法更新的。这时候,可以用Instead Of触发器,把更新操作替换为向每个基本表进行更新。

1.3 触发器的2个中间表

触发器触发的时候有两个中间表:插入表(instered表)和删除表(deleted表)。这两张表的字段,和触发器应用主表的字段相同。中间表存储的数据是执行插入、更新、删除操作的数据,当触发器执行完成后,这两张表就会被删除。Inserted表的数据是待插入的数据,或是触发器修改后的数据。deleted表的数据是插入前的原始数据。如果是删除操作的触发器,deleted表是表示删除的数据。

98b909f20145ef588ab0eff4d6067af1.png

1.4 触发器的语法结构

CREATE TRIGGER trigger_nameON {Table_name|View_name}{FOR|AFTER|INSTEAD OF} [INSERT,UPDATE,DELETE]AS声明部分BEGIN执行部分END

1. `FOR`和`AFTER`意义一样; 它们不能作用于视图

2. 修改触发器把`CREATE`改成`ALTER`

3. 触发器命名规则: `tr_表名_说明`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值