Sq lServer触发器的使用
创建表:
CREATE TABLE [dbo].[GeneralRule](
[ID] [int] NOT NULL,
[GeneralRuleName] [nvarchar](50) NULL,
[DeleteFlag] [int] NOT NULL
) CREATE TABLE [dbo].[DetailRule](
[ID] [int] NOT NULL,
[DetailRuleName] [nvarchar](50) NULL,
[ParentId] [int] NULL,
[DeleteFlag] [int] NOT NULL,
) CREATE TABLE [dbo].[DetailRule_bak](
[ID] [int] NOT NULL,
[DetailRuleName] [nvarchar](50) NULL,
[ParentId] [int] NULL,
[DeleteFlag] [int] NOT NULL,
)
创建触发器:
--增加
create trigger triAddGeneralRule
on DetailRule
for insert --为什么事件触发
as
begin
insert into [DetailRule_bak](ID,detailRuleName,ParentId,DeleteFlag)
select ID,detailRuleName,ParentId,DeleteFlag
from INSERTED
end --删除
create trigger triDelGeneralRule
on GeneralRule
for delete --为什么事件触发
as
delete DetailRule
from DetailRule dr,Deleted d
where dr.parentId=d.ID --修改
create trigger triGeneralRule
on GeneralRule
for update --为什么事件触发
as
if update (ID)
begin
update DetailRule
set parentId=i.ID
from DetailRule dr,Deleted d,Inserted i --2个临时表Deleted和Inserted,分别表示触发事件的旧与新记录
where dr.parentId=d.ID
end
if else 触发器
create table employee(emp_id int,emp_name nvarchar(50),gender int,department int,salary numeric(10,2)) create table updated(emp_id int,salary numeric(10,2)) insert into employee values(1,'tom',10,10,6000.00) insert into updated values(1,6500.00) create trigger up_salary on employee INSTEAD OF update
as if update (salary)
begin
declare @newSalary numeric(10,2)
declare @oldSalary numeric(10,2)
select @newSalary = salary from updated
select @oldSalary = salary from employee where emp_id = (select emp_id from updated)
if @newSalary > @oldSalary * 1.1
print '工资变动不能超过原来工资的10%'
else
update employee set salary = @newSalary where emp_id = (select emp_id from updated)
end
go
Sq lServer触发器的使用的更多相关文章
- 擦亮自己的眼睛去看SQLServer之简单Select(转)
摘要:这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句. 这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句.不知道大家有没有想过到底是什么东西让 ...
- The Windows account sa does not exist and cannot be provisioned as a SQL Server system administrator
今天遇到一个案例,在使用命令修改一个测试服务器(SQL Server 2014标准版)的服务器排序规则时,遇到了下面错误信息 (具体账号信息脱敏处理,随机生成一个账号密码) The Windows a ...
- SQL Server 2012 无人值守安装(加入新实例)
方法1,通过指定条个參数安装 setup.exe /Q /IACCEPTSQLSERVERLICENSETERMS /ACTION=install /PID=<validpid> /FEA ...
- SQL Server 2012 无人值守安装
方法1,通过指定条个參数安装 setup.exe /Q /IACCEPTSQLSERVERLICENSETERMS /ACTION=install /PID=<validpid> /F ...
- Sq server 关于存储过程,触发器的一些理论简述
http://www.doc88.com/p-2905916227462.html
- Hibernate映射文件创建和删除触发器,存储过程等数据库对象
创建表,触发器,和存储过程等数据库对象,这里一定要用create 在hibernate.cfg.xml文件中
- SQL 视图 局部变量 全局变量 条件语句 事务 触发器
一.视图 1.视图是一张虚拟表,他所存储的不是实际数据,而是查询语句,但我们可以对视图进行像数据表一样的操作. 2.为什么使用视图呢?我的理解是:1.在远程传输数据时,可以避免过长的查询字符,减少流量 ...
- pt-online-schema-change中update触发器的bug
pt-online-schema-change在对表进行表结构变更时,会创建三个触发器. 如下文测试案例中的t2表,表结构如下: mysql> show create table t2\G . ...
- MySQL主从环境下存储过程,函数,触发器,事件的复制情况
下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...
随机推荐
- npm离线安装插件
公司内部网络与外部网络隔离,导致npm无法通过npm install安装,只能通过离线安装. 要求: 两台机器(内网一台,外网一台) 两台机器上都已安装好的node和npm 以内网机器安装ftpsyn ...
- python练习实例1--------给定数字组成三位数
题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 来看第一种解法 num = [1, 2, 3, 4] """ 根据题中'互不相同' ...
- 细说tomcat之session持久化探秘
业务场景:通常,我们会在会话级别存放一些参数,期望在session生命周期内,可以一直取得保存在session中的指定数据:而只要session过期或者失效,则需要执行重新登录等操作.但是!我们对于这 ...
- Word设置多级标题
选中标题1的内容,点击编号图标,选中一个经典的编号模板,如下图 之后,再次点击编号图标,然后选中“定义新的多级列表”,将打开一个对话框 确保标题1的标号正确: 接着,确保标题2的编号正确: 依次类推, ...
- thinkcmf 相关
后台登录,暂停关掉登录验证码: /Volumes/macHD2/myCode/wwwroot/app/admin/controller/PublicController.php $captcha = ...
- Win下安装nvm
nvm 是 windows 下切换 node 版本的管理工具,mac 下可以使用 TJ 写的 n . 1.https://github.com/coreybutler/nvm-windows/rele ...
- 《Python数据可视化编程实战》
第一章:准备工作环境 WinPython-32bit-3.5.2.2Qt5.exe 1.1 设置matplotlib参数 配置模板以方便各项目共享 D:\Bin\WinPython-32bit-3.5 ...
- GoogleNet
NET-IN-NET 采用net-in-net 结构(不使用传统线性卷积,使用Mlpconv) 采用全局均值池化来提高传统CNN 网络中最后全连接层参数过于复杂的特点.(全连接层造成网络泛化能力差,a ...
- sql -leetcode 178. Rank Scores
Score 很好得到: select Score from Scores order by Score desc; 要得到rank, 可以通过比较比当前Score 大的Score 的个数得到: sel ...
- js apply使用
js中apply方法的使用 1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinati ...