• Get value from updated, inserted and deleted


     create table employee(
    2>     ID          int,
    3>     name        nvarchar (10),
    4>     salary      int,
    5>     start_date  datetime,
    6>     city        nvarchar (10),
    7>     region      char (1))
    8> GO
    1>
    2insert into employee (ID, name,    salary, start_date, city,       region)
    3>               values (1,  'Jason', 40420,  '02/01/94', 'New York', 'W')
    4> GO

    (rows affected)
    1insert into employee (ID, name,    salary, start_date, city,       region)
    2>               values (2,  'Robert',14420,  '01/02/95', 'Vancouver','N')
    3> GO

    (rows affected)
    1insert into employee (ID, name,    salary, start_date, city,       region)
    2>               values (3,  'Celia', 24020,  '12/03/96', 'Toronto',  'W')
    3> GO

    (rows affected)
    1insert into employee (ID, name,    salary, start_date, city,       region)
    2>               values (4,  'Linda', 40620,  '11/04/97', 'New York', 'N')
    3> GO

    (rows affected)
    1insert into employee (ID, name,    salary, start_date, city,       region)
    2>               values (5,  'David', 80026,  '10/05/98', 'Vancouver','W')
    3> GO

    (rows affected)
    1insert into employee (ID, name,    salary, start_date, city,       region)
    2>               values (6,  'James', 70060,  '09/06/99', 'Toronto',  'N')
    3> GO

    (rows affected)
    1insert into employee (ID, name,    salary, start_date, city,       region)
    2>               values (7,  'Alison',90620,  '08/07/00', 'New York', 'W')
    3> GO

    (rows affected)
    1insert into employee (ID, name,    salary, start_date, city,       region)
    2>               values (8,  'Chris', 26020,  '07/08/01', 'Vancouver','N')
    3> GO

    (rows affected)
    1insert into employee (ID, name,    salary, start_date, city,       region)
    2>               values (9,  'Mary',  60020,  '06/09/02', 'Toronto',  'W')
    3> GO

    (rows affected)
    1>
    2select from employee
    3> GO
    ID          name       salary      start_date              city       region
    ----------- ---------- ----------- ----------------------- ---------- ------
              Jason            40420 1994-02-01 00:00:00.000 New York   W
              Robert           14420 1995-01-02 00:00:00.000 Vancouver  N
              Celia            24020 1996-12-03 00:00:00.000 Toronto    W
              Linda            40620 1997-11-04 00:00:00.000 New York   N
              David            80026 1998-10-05 00:00:00.000 Vancouver  W
              James            70060 1999-09-06 00:00:00.000 Toronto    N
              Alison           90620 2000-08-07 00:00:00.000 New York   W
              Chris            26020 2001-07-08 00:00:00.000 Vancouver  N
              Mary             60020 2002-06-09 00:00:00.000 Toronto    W

    (rows affected)
    1>
    2CREATE TABLE myArchive (
    3>    AID         int           IDENTITY(1,1PRIMARY KEY CLUSTERED,
    4>    type        nvarchar(6)   NOT NULL,
    5>    whenchanged smalldatetime NOT NULL DEFAULT Getdate(),
    6>    ID int,
    7>    newName nvarchar(30),
    8>    oldName nvarchar(50)
    9)
    10> GO
    1>
    2>
    3CREATE TRIGGER myTriggerINSERT
    4> ON Employee
    5> FOR INSERT
    6> AS
    7> DECLARE @ID int, @Name nvarchar(30)
    8>
    9> SET @ID = (SELECT ID FROM inserted)
    10> SET @Name = (SELECT Name FROM inserted)
    11>
    12INSERT myArchive (type, ID, newNameVALUES('INSERT', @ID, @Name)
    13> GO
    1>
    2>
    3CREATE TRIGGER myTriggerDELETE
    4> ON Employee
    5> FOR DELETE
    6> AS
    7> DECLARE @ID int, @Name nvarchar(30)
    8>
    9> SET @ID = (SELECT ID FROM deleted)
    10> SET @Name = (SELECT Name FROM deleted)
    11>
    12INSERT myArchive (type, ID, oldName VALUES('DELETE', @ID, @Name)
    13> GO
    1>
    2CREATE TRIGGER myTriggerUPDATE
    3> ON Employee
    4> INSTEAD OF UPDATE
    5> AS
    6>
    7> DECLARE @ID int, @newName nvarchar(30), @oldName nvarchar(30)
    8>
    9> IF (SELECT ID FROM inserted<> (SELECT ID FROM deleted)
    10>     RAISERROR ('You are not allowed to change ID.', 10,1)
    11> ELSE
    12BEGIN
    13>
    14> --set local variables
    15> SET @ID = (SELECT ID FROM inserted)
    16> SET @newName = (SELECT Name FROM inserted)
    17> SET @oldName = (SELECT Name FROM deleted)
    18>
    19> --write to table
    20UPDATE Employee SET Name = @newName WHERE ID = @ID
    21> -- write to archive
    22INSERT myArchive (type, ID, newName, oldNameVALUES('UPDATE', @ID, @newName, @oldName)
    23END
    24> GO
    1>
    2INSERT Employee (id, nameVALUES (13'Rickie')
    3> GO

    (rows affected)
    1>
    2SELECT FROM myArchive
    3> GO
    AID         type   whenchanged          ID          newName                        oldName
    ----------- ------ -------------------- ----------- ------------------------------ ------------------
              INSERT  2006-10-10 20:21:00          13 Rickie                         NULL

    (rows affected)
    1>
    2UPDATE Employee
    3> SET Name = 'Rick'
    4WHERE ID = 3
    5> GO

    (rows affected)

    (rows affected)
    1>
    2SELECT FROM myArchive
    3> GO
    AID         type   whenchanged          ID          newName                        oldName
    ----------- ------ -------------------- ----------- ------------------------------ ------------------
              INSERT  2006-10-10 20:21:00          13 Rickie                         NULL
              UPDATE  2006-10-10 20:21:00           3 Rick                           Celia

    (rows affected)
    1>
    2>
    3> drop table myArchive
    4> drop table employee
    5> GO
    1>

  • 相关阅读:
    gulp学习笔记1
    2017年秋季校招前端面经(百度,腾讯,网易,华为,乐视等)
    前端面试笔试知识汇总3(含答案)
    前端面试笔试知识汇总2(含答案)
    前端面试笔试知识汇总1(含答案)
    一些新的web性能优化技术
    一个简单的无限滚动的加载数据实现
    正则和字符串之间的关系梳理
    数据结构——二叉树的知识点总结
    秋招笔试碰到的疑难题目2
  • 原文地址:https://www.cnblogs.com/kingwangzhen/p/1755815.html
Copyright © 2020-2023  润新知