📄 triggerdemo14.sql
字号:
/*
文件名称: TriggerDemo14.sql
目 的: 使用 IF COLUMNS_UPDATE() 参数去测试字段的内容是否已被 UPDATE 命令改变
*/
USE 北风贸易
GO
IF exists (select * from dbo.sysobjects where id = object_id(N'dbo.MyTable') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE dbo.MyTable
GO
CREATE TABLE MyTable
(
代码 nchar(5) NOT NULL,
姓名 nvarchar(12) NOT NULL,
城市 nvarchar(3) NULL,
薪资 money NOT NULL,
税率 decimal(3,2) NULL,
税额 AS (薪资 * 税率)
)
GO
-- 建立一个由新增与更新作业引发执行的 AFTER 触发程序
CREATE TRIGGER InsertUpdateTri_MyTable ON MyTable
AFTER INSERT,UPDATE
AS
-- 检查第一个字段(亦即「代码」字段)是否已被修改
-- POWER(2,(1-1)) = 1
IF (COLUMNS_UPDATED() & 1) = 1
UPDATE MyTable
SET MyTable.城市 = CASE UPPER(LEFT(MyTable.代码,1))
WHEN 'A' THEN '北京市'
WHEN 'B' THEN '天津市'
ELSE '河北省'
END
FROM inserted
WHERE MyTable.代码 = inserted.代码
-- 检查第四个字段(亦即「薪资」字段)是否已被修改
-- POWER(2,(4-1)) = 8
IF (COLUMNS_UPDATED() & 8) = 8
UPDATE MyTable
SET MyTable.税率 = CASE
WHEN (MyTable.薪资 >= 60000) THEN 0.35
WHEN (MyTable.薪资 >= 50000) THEN 0.25
WHEN (MyTable.薪资 >= 40000) THEN 0.2
WHEN (MyTable.薪资 >= 20000) THEN 0.15
ELSE 0.01
END
FROM inserted
WHERE MyTable.代码 = inserted.代码
GO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -