【发布时间】:2011-05-05 12:27:43
【问题描述】:
我正在学习 ms sql server 中的触发器,并在网站上遇到以下代码。我知道为插入、更新和删除命令创建了一个触发器,但不明白之后发生了什么。该网站也没有解释脚本。请解释一下这里发生了什么。
select * from employee
GO
ID name salary start_date city region
----------- ---------- ----------- ----------------------- ---------- ------
1 Jason 40420 1994-02-01 00:00:00.000 New York W
2 Robert 14420 1995-01-02 00:00:00.000 Vancouver N
3 Celia 24020 1996-12-03 00:00:00.000 Toronto W
4 Linda 40620 1997-11-04 00:00:00.000 New York N
5 David 80026 1998-10-05 00:00:00.000 Vancouver W
6 James 70060 1999-09-06 00:00:00.000 Toronto N
7 Alison 90620 2000-08-07 00:00:00.000 New York W
8 Chris 26020 2001-07-08 00:00:00.000 Vancouver N
9 Mary 60020 2002-06-09 00:00:00.000 Toronto W
(受影响的 9 行)
-- Creating and Using Triggers
CREATE TRIGGER myTrigger
ON employee
FOR UPDATE, INSERT, DELETE
AS
SELECT * FROM inserted
SELECT * FROM deleted
GO
SELECT 'Before INSERT'
INSERT Employee (ID, Name) VALUES (31, 'Rick')
GO
插入前
(受影响的 1 行)
ID name salary start_date city region
----------- ---------- ----------- ----------------------- ---------- ------
31 Rick NULL NULL NULL NULL
(受影响的 1 行)
ID name salary start_date city region
----------- ---------- ----------- ----------------------- ---------- ------
(0 行受影响)
SELECT 'Before UPDATE'
UPDATE Employee
SET Name = 'Rickie'
WHERE ID = 3
GO
更新前
(受影响的 1 行)
ID name salary start_date city region
----------- ---------- ----------- ----------------------- ---------- ------
3 Rickie 24020 1996-12-03 00:00:00.000 Toronto W
(受影响的 1 行)
ID name salary start_date city region
----------- ---------- ----------- ----------------------- ---------- ------
3 Celia 24020 1996-12-03 00:00:00.000 Toronto W
(受影响的 1 行)
SELECT 'Before DELETE'
DELETE FROM Employee WHERE ID = 3
GO
删除前
(受影响的 1 行)
ID name salary start_date city region
----------- ---------- ----------- ----------------------- ---------- ------
(0 行受影响)
ID name salary start_date city region
----------- ---------- ----------- ----------------------- ---------- ------
3 Rickie 24020 1996-12-03 00:00:00.000 Toronto W
(受影响的 1 行)
【问题讨论】:
-
@martin....谢谢。我会记下@neil....你编辑了什么?
-
编辑发生的时间是指向历史的链接,可让您查看执行的每个编辑的内容。但是在这种情况下(为了节省您的查看时间),Neil 使用代码块编辑了您的问题以格式化代码(和结果),这使您的问题更易于阅读。您以后可以通过突出显示代码(或其他应以固定宽度字体显示并保留间距的文本)并按下
{}按钮来自己执行此操作。 -
@damien...感谢您的信息:)
标签: sql sql-server