1. Trang chủ
  2. » Công Nghệ Thông Tin

SQL Server - Bài 7

23 553 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Implementing Trigger
Tác giả Vu Tuyet Trinh
Trường học Hanoi University of Technology
Thể loại bài
Thành phố Hanoi
Định dạng
Số trang 23
Dung lượng 362,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

SQL Server - Bài

Trang 4

 Introduction to Triggers

Trang 5

Creating and Managing Triggers

Trang 6

Creating Triggers

Trang 7

Altering and Dropping Triggers

 Changes the definition without dropping the trigger

 Can disable or enable a trigger

Trang 8

How Triggers Work

Trang 9

How an INSERT Trigger Works

INSERT statement to a table with an INSERT Trigger Defined

INSERT [Order Details] VALUES(10525, 2, 19.00, 5, 0.2)

INSERT [Order Details] VALUES(10525, 2, 19.00, 5, 0.2)

Order Details

OrderID

10522 10523 10524

10522 10523 10524

ProductID

10 41 7

10 41 7

UnitPrice

31.00 9.65 30.00

31.00 9.65 30.00

Quantity

7 9 24

7 9 24

Discount

0.2 0.15 0.0

0.2 0.15 0.0 5

10 41 7

UnitPrice

31.00 9.65 30.00

31.00 9.65 30.00

Quantity

7 9 24

7 9 24

Discount

0.2 0.15 0.0

0.2 0.15 0.0 5

ON [Order Details]

FOR INSERTAS

UPDATE P SET UnitsInStock = (P.UnitsInStock – I.Quantity)FROM Products AS P INNER JOIN Inserted AS I

ON P.ProductID = I.ProductID

Trigger Code:

USE NorthwindCREATE TRIGGER OrdDet_Insert

ON [Order Details]

FOR INSERTAS

UPDATE P SET UnitsInStock = (P.UnitsInStock – I.Quantity)FROM Products AS P INNER JOIN Inserted AS I

ON P.ProductID = I.ProductID

UPDATE P SET UnitsInStock = (P.UnitsInStock – I.Quantity)FROM Products AS P INNER JOIN Inserted AS I

ON P.ProductID = I.ProductID

Products

ProductID UnitsInStock … …

1 2 3 4

1 2 3 4

15 10 65 20

15 10 65 20

Trang 10

Activating Insert Trigger

Trang 11

How a DELETE Trigger Works

DELETE Statement to a table with a DELETE Trigger Defined

Deleted

4 Dairy Products Cheeses 0x15…

DELETE statement logged

Categories

CategoryID

1 2 3

1 2 3

CategoryName

CategoryName

Beverages Condiments Confections

Beverages Condiments Confections

Description

Soft drinks, coffees…

Sweet and savory … Desserts, candies, …

Soft drinks, coffees…

Sweet and savory … Desserts, candies, …

Picture

0x15… 0x15… 0x15…

0x15… 0x15… 0x15… 0x15… Cheeses

Dairy Products 4

UPDATE P SET Discontinued = 1FROM Products AS P INNER JOIN deleted AS d

ON P.CategoryID = d.CategoryID

USE Northwind

CREATE TRIGGER Category_Delete

ON CategoriesFOR DELETEAS

UPDATE P SET Discontinued = 1FROM Products AS P INNER JOIN deleted AS d

ON P.CategoryID = d.CategoryID

Products

ProductID Discontinued … …

1 2 3 4

1 2 3 4

0 0 0 0

0 0 0 0

Trigger Actions Execute

UPDATE P SET Discontinued = 1FROM Products AS P INNER JOIN deleted AS d

ON P.CategoryID = d.CategoryID

Trang 12

Activating UPDATE Trigger

Trang 13

How an UPDATE Trigger Works

UPDATE Statement to a table with an UPDATE Trigger Defined

UPDATE EmployeesSET EmployeeID = 17WHERE EmployeeID = 2

UPDATE EmployeesSET EmployeeID = 17WHERE EmployeeID = 2

UPDATE Statement logged as INSERT and DELETE Statements

Employees

EmployeeID LastName FirstName Title HireDate

1 2 3 4

1 2 3 4

Davolio Barr Leverling Peacock

Davolio Barr Leverling Peacock

Nancy Andrew Janet Margaret

Nancy Andrew Janet Margaret

Sales Rep.

R Sales Rep.

Sales Rep.

Sales Rep.

R Sales Rep.

RAISERROR ('Transaction cannot be processed.\

***** Employee ID number cannot be modified.', 10, 1)

RAISERROR ('Transaction cannot be processed.\

***** Employee ID number cannot be modified.', 10, 1)

ROLLBACK TRANSACTION

AS

IF UPDATE (EmployeeID)

BEGIN TRANSACTION

RAISERROR ('Transaction cannot be processed.\

***** Employee ID number cannot be modified.', 10, 1)

ROLLBACK TRANSACTION

Transaction cannot be processed.

***** Member number cannot be modified

Transaction cannot be processed.

***** Member number cannot be modified

Employees

EmployeeID LastName FirstName Title HireDate

1 2 3

1 2 3

Davolio Barr Leverling

Davolio Barr Leverling

Nancy Andrew Janet

Nancy Andrew Janet

Sales Rep.

R Sales Rep.

Sales Rep.

R Sales Rep.

Trang 14

Activating DELETE Trigger

Trang 15

 Introduction to Triggers

 Creating, Altering, and Dropping Triggers

 Working with Triggers

Trang 16

modification

Trang 17

Considerations for Using Triggers

Trigger to Fire

Statements That Define Triggers Table Owners Cannot Create AFTER Triggers on

Trang 18

Examples of Triggers

Trang 19

Enforcing Data Integrity

CREATE TRIGGER BackOrderList_Delete

ON Products FOR UPDATEAS

IF (SELECT BO.ProductID FROM BackOrders AS BO JOIN

Inserted AS I ON BO.ProductID = I.Product_ID) > 0

BEGIN

DELETE BO FROM BackOrders AS BO INNER JOIN Inserted AS I

ON BO.ProductID = I.ProductIDEND

CREATE TRIGGER BackOrderList_Delete

ON Products FOR UPDATEAS

IF (SELECT BO.ProductID FROM BackOrders AS BO JOIN

Inserted AS I ON BO.ProductID = I.Product_ID) > 0

BEGIN

DELETE BO FROM BackOrders AS BO INNER JOIN Inserted AS I

ON BO.ProductID = I.ProductIDEND

Products

ProductID UnitsInStock … …

1

3 4

1

3 4

15 10 65 20

15 10 65 20

2 15 Updated

BackOrders

ProductID UnitsOnOrder

1 12 3

1 12 3

15 10 65

15 10 65

Trigger Deletes Row

Trang 20

Products

ProductID UnitsInStock … …

1 2 3 4

1 2 3 4

15 10 65 20

15 10 65 20

Enforcing Business Rules

Products with Outstanding Orders Cannot Be Deleted

IF (Select Count (*) FROM [Order Details] INNER JOIN deleted

ON [Order Details].ProductID = deleted.ProductID ) > 0

ROLLBACK TRANSACTION

IF (Select Count (*) FROM [Order Details] INNER JOIN deleted

ON [Order Details].ProductID = deleted.ProductID ) > 0

ROLLBACK TRANSACTION

DELETE statement executed on

Product table Trigger code checks the Order Details

10522 10523 10524 10525

ProductID

10 2 41 7

10 2 41 7

UnitPrice

31.00 19.00 9.65 30.00

31.00 19.00 9.65 30.00

Quantity

7 9 24

7 9 24

Discount

0.2 0.15 0.0

0.2 0.15 0.0 9

Transaction rolled back

1

3 4

15 10 65 20

15 10 65 20

Trang 21

Performance Considerations

Deleted Tables Are in Cache

 Number of tables that are referenced

 Number of rows that are affected

a Transaction

Trang 22

Possible

Recursive Trigger Definitions

Ngày đăng: 15/11/2012, 10:59

TỪ KHÓA LIÊN QUAN