zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    MySQL安装图解
    程序员感触
    一个人的生活
    开始懂了
    limit 检索记录行
    Ajax的完整兼容各种浏览器版本代码
    java.lang.UnsupportedClassVersionError: Unsupported major.minor version 49.0的错误 [转]
    通信协议
    SDK
    毕业三个多月的感悟
  • 原文地址:https://www.cnblogs.com/kingwangzhen/p/1755815.html
Copyright © 2011-2022 走看看