⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 triggerdemo14.sql

📁 T-SQL示例大全
💻 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 + -