SQL(触发器)
触发器语法格式(实例):
ALTER TRIGGER tri_edituser
ON dbo.sys_User
FOR INSERT,UPDATE,DELETE
AS
BEGIN
---判断是新增?修改?删除?
DECLARE
@IsInsert BIT,
@IsUpdate BIT,
@IsDelete BIT
IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
SET @IsInsert = 1
ELSE
SET @IsInsert = 0
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
SET @IsUpdate = 1
ELSE
SET @IsUpdate = 0
IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
SET @IsDelete = 1
ELSE
SET @IsDelete = 0
---新增
IF(@IsInsert=1)
BEGIN
--获取工号
DECLARE @ID VARCHAR(20)
IF EXISTS(Select * From tab_User Where RecordDate > DATEADD(day,DATEDIFF(day,0,getdate()),0))
BEGIN
SELECT @ID=CAST(MAX(工号) as int) + 1 From tab_User Where RecordDate > DATEADD(day,DATEDIFF(day,0,getdate()),0)
END
ELSE
BEGIN
SELECT @ID=CONVERT(varchar(8),getdate(),112) + '01'
END
INSERT INTO ERPDB.dbo.tab_user
(
-- ID -- this column value is auto-generated
工号,
用户名,
密码,
角色,
二级权限,
employee_mail,
mobile,
dept,
isVisible,
lookContractRight,
RecordDate
)
SELECT @ID,UserName,'888888','',
'销售查询(个人),费用查询(个人),应收款项(个人),询价查询(个人),进出货查询(个人),利息查询(个人),外借查询(个人),',
Email,NULL,NULL,1,@ID,GETDATE() FROM INSERTED
END
---修改
IF(@IsUpdate = 1)
BEGIN
SELECT @ID = 工号 FROM ERPDB.dbo.tab_user AS tu JOIN INSERTED i ON tu.用户名=i.UserName
IF (@ID IS NOT NULL AND @ID <> '')
BEGIN
UPDATE ERPDB.dbo.tab_user
SET
-- ID = ? -- this column value is auto-generated
用户名 = i.UserName,
employee_mail = i.Email,
isVisible = i.[Status],
RecordDate = GETDATE()
FROM ERPDB.dbo.tab_user tu,INSERTED i,DELETED d
WHERE tu.用户名=i.UserName AND tu.工号=@ID
END
END
IF(@IsDelete = 1)
END
--ALTER TABLE sys_User DISABLE TRIGGER tri_edituser
SQL(触发器)的更多相关文章
- SQL触发器实例讲解
SQL触发器实例1 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Inser ...
- SQL触发器实例
SQL触发器实例讲解(本文是来自百度文库) 备注:本人建了一个站特价汇,我想记录每个商品的点击量,然后按照点击量来牌名商品,想要提高效率,所以必须得用触发器,下面是本人在百度文库中的找到的学习资料,分 ...
- SQL触发器中的deleted表和inserted表
SQL触发器中的deleted表和inserted表 在触发器语句中用两个特殊的表一个是deleted表和inserted.它们是通过触发器操作自动创建驻留在内存中的临时表. 描述: Deleted表 ...
- SQL 触发器(学生,课程表,选修表)
SQL 触发器(学生,课程表,选修表) 触发器是一种特殊类型的存储过程,它不由用户通过命令来执行,而是在用户对表执行了插入,删除或修改表中数据等操作时激活执行.可以这样形容:存储过程像一个遥控炸弹,我 ...
- Oracle数据库之PL/SQL触发器
Oracle数据库之PL/SQL触发器 1. 介绍 触发器(trigger)是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是 ...
- PB+MS SQL+触发器必须指出
PB+MS SQL+触发器必须指出: 若触发器存在两笔以上的返回值,比方两条update 语句,被误判为数据有改变.存盘不成功. 提示: Row changed between retrieve an ...
- SQL触发器实例(下)
基本语法: Create Trigger [TriggerName] ON [TableName] FOR [Insert][,Delete][,Update] AS --触发器要执行的操作语句. G ...
- SQL 触发器-如何查看当前数据库中有哪些触发器
在查询分析器中运行: use 数据库名goselect * from sysobjects where xtype='TR' sysobjects 保存着数据库的对象,其中 xtype 为 TR 的记 ...
- 【SQL Server】SQL触发器经验详解
[SQL Server]SQL触发器经验详解 | 浏览: 4314 | 更新: 2013-01-07 15:33 25 11 全文阅读分步阅读 加入杂志 步骤 1 2 3 4 5 6 7 8 ...
- SQL触发器 inset自学经验
本人建立了一个特价汇网站,想要记录每个商品的点击量和整个网站的访问量,于是就想用sql 触发器来实现 drop trigger tgr_cg_records_update_column create ...
随机推荐
- redis系列-redis的使用场景
redis越来越受大家欢迎,提升下速度,做下缓存,完成KPI之利器呀.翻译一篇文章<<How to take advantage of Redis just adding it to yo ...
- oracle 表类型变量的使用
转载于:http://www.itxuexiwang.com/a/shujukujishu/oracle/2016/0216/89.html?1455872314 使用记录类型变量只能保存一行数据,这 ...
- Memcache基础教程
Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力. 它可以应 ...
- java 线程协作 yield()
yield():方法的定义 调用yield方法会让当前线程交出CPU权限,让CPU去执行其他的线程. 但是yield不能控制具体的交出CPU的时间,另外,yield方法只能让拥有相同优先级的线程有获取 ...
- 获取当前请求的URL的地址、参数、参数值、各种属性
//URL: http://localhost:1897/User/Press/UserContent.aspx/9878?id=1#toc Request.ApplicationPath; //结果 ...
- 新手入门:史上最全Web端即时通讯技术原理详解
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
- Ubuntu14中supervisor的安装及配置
supervisor是一款很好用的进程管理工具,其命令也很简单,其安装过程如下: Ubuntu14: 首先保证本地的Python环境是OK的,并且已经安装supervisor包,如果没有安装可以用ea ...
- Javascript设计模式系列学习笔记
因为是学习笔记,里面并没有很多注释和讲解,所有不太适合0基础的朋友看,只能说抱歉了. 这些笔记目前还存在很多的问题,不过我相信再今后的学习过程中会把这些问题挨个的解决. 除了前面3节后面的都不分前后顺 ...
- java错误
Workspace in use or cannot be created, choose a different one. 出现这种情况一般是workspace的配置文件中出现了.lock文件(wo ...
- Servlet的四种映射模式
1. 路径匹配模式 <url-pattern>/test/*</url-pattern> 2. 扩展名匹配模式 <url-pattern>*.do</url- ...