1. 程式人生 > >SqlServer觸發器--基礎語法以及轉換函式

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型別;