SqlServer触发器--基础语法以及转换函数以及跨库触发器

1、sqlserver触发器语法

CREATE TRIGGER trigger_name[触发器名称] 
	ON table_name[表名] 
		 instead of/for before [insert、update、delete]
		AS
			BEGIN
				....触发器执行体....
			END
		GO
注释:[]中的为中文解释;
DML触发器分为两种:
	前置触发:instead of
	后置触发:for before
		  	 insert :后置插入触发 
		  	 update :后置修改触发
		  	 delete :后置删除触发
		     写法:for [insert、update、delete];before可省略不写

2、定义变量语法

1、declare @变量名 数据类型 数据长度;
	实例: declare @num  int(100);
2、变量赋值
	SET 变量名 = value;(给一个变量赋值)
	实例:SET @num = 99;
	select @age = age from client where name = @name ; (查询客户张三的年龄赋值给@age变量;可给多个变量赋值)

3、if else 的使用

1、单条件 : if update(A) ;  --如果A字段发生改变,执行某某操作
2、两条件 :if update(A){
				执行操作
			}ELSE {
				执行操作
			}; 
3、多条件: if update(A) or delete(A) ; --多条件中需要指明触发器

4、积累的小技巧

1、在sql中 <> 表示不等于;
   示例:if (@a <> 4) ;  --如果变量a不等于4
2、在sql的拼接需要注意两点:
	(1)、@val = ‘ 中文 ‘+ @val_1+’  ’ ;--如果拼接的过程中@val_1的数据类型不是字符串需要用转换函数转成字符串类型;
	(2)、在字符串拼接在,变量一定不能为空,如果为空,会导致被拼接的这个字符串为空;
		   解决方法: isnull(@val_1,' 啦啦') ; --如果@val_1为空,设置他默认值为“啦啦 ”。

5、转换函数

convert(需要转换的类型,被转换的表达式); --表达式可以是变量,可以是表达式
1、convert(nvarchar,@val_1) ; --把@val_1变量转为nvarchar类型
2、convert(nvarchar,convert(decimal,@val_1)); --把@val_1先转为decimal类型,再转为nvarchar类型;

6、示例

DROP TRIGGER
IF
EXISTS nhdc_cloud_xwh_house_online.trigger_uptShowName;
CREATE TRIGGER trigger_uptShowName BEFORE UPDATE ON nhdc_cloud_xwh_house_online.xwh_project
 FOR EACH ROW
BEGIN
	
	SET @old_project_code = old.project_code;
IF
	old.show_name <> new.show_name THEN
		UPDATE nhdc_cloud_customer.xwh_team_group_staff 
		SET project_name = new.show_name 
	WHERE
		project_code = @old_project_code;
		
		UPDATE nhdc_cloud_customer.o_d_broker 
		SET project_name = new.show_name 
	WHERE
		project_code = @old_project_code;
	
	END IF;
END;	
  • 16
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值