triggerdemo25.sql

来自「T-SQL示例大全」· SQL 代码 · 共 70 行

SQL
70
字号
/*
文件名称: TriggerDemo25.sql
*/
USE 北风贸易
GO

IF exists (select * from dbo.sysobjects where id = object_id(N'dbo.SampleTable') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    DROP TABLE dbo.SampleTable
GO

IF exists (select * from dbo.sysobjects where id = object_id(N'dbo.MyView') and OBJECTPROPERTY(id, N'IsView') = 1)
    DROP VIEW dbo.MyView
GO

--建立一个数据表
CREATE TABLE SampleTable
(
Id char(10),
FirstName nvarchar(20),
LastName  nvarchar(30)
)
GO

-- 建立一个视图,且其中一个字段是由原始数据表的两个字段组合而成
CREATE VIEW MyView
AS
SELECT Id,FirstName +LastName AS CombinedName FROM SampleTable

GO

-- 为视图 MyView 建立一个 INSTEAD OF INSERT 触发程序
CREATE TRIGGER InsteadInsertTrigger
ON MyView
INSTEAD OF INSERT
AS
BEGIN

   INSERT SampleTable
      SELECT Id,
         -- 截取出姓氏的字符串
         SUBSTRING(
            CombinedName,
            1,
            (CHARINDEX(';', CombinedName) - 1)
            ),
         -- 截取出名字的字符串
         SUBSTRING(
            CombinedName,
            (CHARINDEX(';', CombinedName) + 1),
            DATALENGTH(CombinedName)
            )
      FROM inserted
END

GO

--新增数据至视图
INSERT MyView (Id,CombinedName) VALUES ('A123456781','章;立民')
INSERT MyView (Id,CombinedName) VALUES ('B123456781','庄;文升')
INSERT MyView (Id,CombinedName) VALUES ('C123456781','章;舒涵')
GO

--查阅数据表的数据内容
SELECT * FROM SampleTable
GO

--查阅视图的数据内容
SELECT * FROM MyView
GO

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?