mssql触发器demo
USE [pos]
GO
/****** Object: Trigger [dbo].[tr_insert] Script Date: 06/26/2014 09:27:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER [dbo].[tr_insert]
ON [dbo].[bill_d]
AFTER INSERT
AS
BEGIN
declare @goodsCode varchar(5)
declare @qty decimal(18,2)
declare @price money
declare @cnt int
declare @billType varchar(20)
declare @billNo varchar(20)
declare c1 cursor for select goodsCode,qty,price,billNo from inserted
open c1
FETCH NEXT FROM c1 INTO @goodsCode,@qty,@price,@billNo
WHILE @@FETCH_STATUS =0
begin
select @billType=billType from bill_m where billNo=@billNo
if @billType='StockIn' begin -- 进货
select @cnt=isnull(count(goodscode),0) from goods_stock where goodscode=@goodscode
if @cnt=0 begin
insert into goods_stock(goodscode,stock,price) values (@goodscode,@qty,@price)
end else begin
update goods_stock set stock=stock+@qty,price=(stock*price+@qty*@price)/(stock+@qty)
where goodscode=@goodscode
end
end else if @billType='StockInReturn' begin -- 进货退货
select @cnt=isnull(count(goodscode),0) from goods_stock where goodscode=@goodscode
if @cnt>0 begin
update goods_stock set stock=stock-@qty where goodscode=@goodscode
end
end
FETCH NEXT FROM c1 INTO @goodsCode,@qty,@price,@billNo
end
close c1
deallocate c1
END
mssql触发器demo的更多相关文章
- 触发器Demo
--mysql 触发器简单实例 --创建表1 )) ; --创建表2 )); --创建触发器,表一增加数据时,表二自动增加数据 create trigger t_afterinsert_on_tab1 ...
- MSSQL 触发器 暂停 和 启动
开启关闭触发器 禁用: ALTER TABLE member DISABLE TRIGGER trig1 GO 恢复: ALTER TABLE member ENABLE TRIGGER trig1 ...
- MSSQL触发器
1.触发器语法 CREATE TRIGGER<trigger name> ON [<模式名>.]<表名或视图名> [WITH ENCRYPTION] {{{FOR| ...
- mssql游标demo
declare @billIds varchar(400) declare @billId varchar(40) DECLARE c1 CURSOR FOR select top 5 SaleNo ...
- mssql存储过程demo
ALTER PROCEDURE [dbo].[sp_get_saleData]ASBEGIN set nocount on -- 获取最近上传数据的时间戳 declare @dd datetime s ...
- mssql函数demo
ALTER FUNCTION [dbo].[f_GetCookType] (@saleDate datetime)RETURNS varchar(6)ASBEGIN declare @cookType ...
- SQL Server 触发器demo
GO /****** Object: Trigger [dbo].[tri_device] Script Date: 2018/6/11 10:56:08 ******/ SET ANSI_NUL ...
- MSSQL 视图/事务(TRAN[SACTION])/存储过程(PROC[EDURE])/触发器(TRIGGER )
--视图 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上 视图在操作上和数据表没有什么区别,但两者的差异是其本质是不同: 数据表是实际存储记录的地方, ...
- T4 代码生成 Demo (抽奖程序)
参考自这位大狮的: https://github.com/Pencroff/Dapper-DAL/blob/master/Dapper-DAL/Models/ModelGenerator.tt 项目 ...
随机推荐
- OSharp框架总体设计
OSharp框架解说系列(1):总体设计 〇.前言 哈,距离前一个系列<MVC实用构架设计>的烂尾篇(2013年9月1日)已经跨了两个年头了,今天是2015年1月9日,日期已经相映,让我们 ...
- ASC #1
开始套题训练,第一套ASC题目,记住不放过每一题,多独立思考. Problem A ZOJ 2313 Chinese Girls' Amusement 循环节 题意:给定n,为圆环长度,求k < ...
- itoa函数的实现(不同进制)
2013-07-08 17:12:30 itoa函数相对于atoi函数,比较简单,还是要注意考虑的全面. 小结: 一下几点需要考虑: 对负数,要加上负号: 考虑不同进制,根据要求进行处理:对不同的进制 ...
- 【HDOJ】4333 Revolving Digits
扩展KMP基础题目. /* 4333 */ #include <iostream> #include <sstream> #include <string> #in ...
- Area of a Circle
Area of a Circle Description: Complete the function circleArea so that it will return the area of a ...
- Emulator control为灰色的情况
新建了一个虚拟机,然后发现Emulator control为灰色,让eclipse重启下就可以了,然后就可以使用了.
- JsonPath详解
JsonPath is to JSON what XPATH is to XML, a simple way to extract parts of a given document. JsonPat ...
- 1523. K-inversions(K逆序对)
1523 这题应该说有一些DP的思想吧 dp[i][j]表示以i为结尾第j个数的个数 k单调下降 直接求的话肯定超时 然后用树状数组来进行维护 求k-1次树状数组 #include <iostr ...
- poj 1062 昂贵的聘礼(最短路 dijk+枚举)
终于A 了,这题做着真麻烦 题目:http://poj.org/problem?id=1062 dijk 一般用于正权有向图 此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等 ...
- Java [Leetcode 217]Contains Duplicate
题目描述: Given an array of integers, find if the array contains any duplicates. Your function should re ...