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

Hệ Quản Trị Cơ Sở Dữ Liệu - TRIGGER & CURSOR pdf

23 1,3K 17

Đ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

Định dạng
Số trang 23
Dung lượng 463,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

Khái quát về trigger I.2.Làm việc với trigger I.3.Trigger kiểm tra ràng buộc dữ liệu I.4.Trigger cập nhật giá trị tự động II.Cursor II.1.Khái niệm về CurSor : II.2Thứ tự các thao tác

Trang 1

Hệ Quản Trị Cơ Sở Dữ Liệu

TRIGGER & CURSOR

Trang 2

Nội dung

I.Trigger

I.1 Khái quát về trigger

I.2.Làm việc với trigger

I.3.Trigger kiểm tra ràng buộc dữ liệu

I.4.Trigger cập nhật giá trị tự động

II.Cursor

II.1.Khái niệm về CurSor :

II.2Thứ tự các thao tác khi xử lý dữ liệu trên CurSor :

Trang 3

I.1 Khái quát về trigger

I.1.1Trigger là gì?

- Cấu trúc gần giống như một thủ tục nội tại nhưng không

có tham số đầu vào và đầu ra và phải được liên kết với một bảng hoặc bảng ảo trong CSDL

- Không thể gọi mà được thực hiện tự động và được sử

dụng trong việc : tính toán, cập nhật giá trị tự động và

kiểm tra dữ liệu nhập

Khai báo sử dụng :

− Kết hợp với các hành động INSERT/ UPDATE/ DELETE

trên bảng hay bảng ảo

- Khi tạo ra, tham gia vào transaction khởitạobởi câu lệnh

cập nhật dữ liệu tương ứng

I.Trigger

Trang 4

I.1.2.Các xử lý bên trong trigger :

- Kiểm tra các ràng buộc dữ liệu phức tạp:

+ Các ràng buộc mô tả phức tạp không thể dùng

constraint

+ Gọi ràng buộc Rollback Tran để hủy thao tác cập nhật khi vi phạm ràng buộc

+ Bảo đảm dữ liệu luôn được toàn vẹn

+ Bảo đảm việc kiểm tra thử ứng dụng không làm hư dữ liệu có sẵn

Trang 5

- Tính toán, tự động cập nhật giá trị :

+ Bổ sung các hành động cập nhật dữ liệu để đảm bảo tính toàn vẹn dữ liệu

+ Đơn giản hóa việc xây dựng ứng dụng

- Chỉ định các bẫy lỗi dễ hiểu:

+ Tăng tính thân thiện của ứng dụng

+ Dễ dàng nhận ra các lỗi khi lập trình

Trang 6

I.1.3 Các hạn chế trên trigger :

- Không được tạo và tham chiếu bảng tạm

- Không tạo hay thay đổi, xóa cấu trúc các đối tượng sẵn có

trong CSDL

- CREATE/ ALTER/ DROP

- Không gán, cấp quyền cho người dùng

- GRAND/ REVOKE

Trang 7

I.1.4 Các loại trigger :

Có hai loại :

- AFTER(FOR)trigger : là loại ngầm định, loại trigger này

sẽ thực hiện các lệnh bên trong sau khi đã thực hiện xong

sự kiện kích hoạt trigger

INSTEAD OF trigger : là loại trigger mà hoạt động của sự kiện gọi trigger sẽ bị bỏ qua và thay vào đó là các lệnh

trong trigger được thực hiện

Trang 8

I.1.5 Các bảng trung gian Inserted và Deleted

 Khi trigger thực thi theo các sự kiện Insert hoặc

Delete thì dữ liệu khi thay đổi sẽ được chuyển sang các bảng Inserted và Deleted, là 2 bảng tạm thời

 Các bảng này chỉ được sử dụng với các lệnh trong

trigger và dùng để khôi phục lại phần dữ liệu đã thay đổi (roll back)

Trang 9

a Inserted :

- Chứa dữ liệu được thêm mới trong hành động

Insert/Update

- Có ở cả hai loại trigger

- Cấu trúc bảng giống với bảng thực sự được cập nhật dữ

liệu

b Deleted :

- Chứa dữ liệu bị xóa trong hành động Delete/Update

- Có ở cả hai loại trigger

- Cấu trúc bảng giống với bảng thực sự được cập nhật dữ

Trang 10

I.1.6.Khi nào cần dùng Trigger ?

a Kiểm tra các ràng buộc dữ liệu phức tạp.

- Đối với ràng buộc toàn vẹn dữ liệu đơn giản như kiểm tra

ràng buộc miền giá trị,kiểm tra ràng buộc thuộc tính thì nên dùng Constraint

- Đối với các ràng buộc phức tạp: Vd: kiểm tra tính toàn

vẹn trên nhiều cột hoặc dòng thì dùng trigger Nó cho

phép ta xây dựng các câu lệnh để dữ liệu thay đổi theo ý muốn

b Khi các biện pháp bảo đảm toàn vẹn dữ liệu như bảo đảm toàn vẹn dữ liệu

Constraints không thể thỏa mãn yêu cầu của ứng dụng.VD: muốn kiểm tra ràng buộc kèm theo những thông

báo

Constraints sẽ kiểm tra dữ liệu trước khi

Nhập vào Table, còn Trigger được kích hoạt

khi các sự kiện Insert, Update, Delete xảy ra

rồi

Trang 11

c Khi CSDL chưa được chuẩn hóa thì có thể xảy ra dữ liệu

thừa

thừa, chứa ở nhiều vị trí trong CSDL Yêu cầu đặt ra là dữ ở nhiều vị trí

liệu cần cập nhật thống nhất trong mọi nơi

d Khi xảy ra thay đổi dây chuyền dữ liệu giữa các bảng với nhau.Dữ liệu bảng này thay đổi kéo theo dữ liệu trong bảng khác cũng được thay đổi theo

Trang 12

I.2 Làm việc với trigger

I.2.1.Tạo mới Trigger.

Create Trigger Ten_Trigger

On Ten_Bang{[Instead of] | [For | After] }{ [Insert] ,[Update] , [Delete] }AS

[Declare Bien_Cuc_Bo]

Các Lệnh bên trong

I.2.2 Xóa Trigger:

Drop Trigger Ten_Trigger

Trang 13

I.2.3 Sửa nội dung Trigger:

Alter Trigger Ten_Trigger

Trang 14

Trong đó:

- Ten_Bang: là tên bảng mà trigger tạo mới sẽ liên kết

- Instead of: Chỉ định đây là trigger loại Instead of

trigger Mỗi bảng chỉ có quyền tạo 1 instead of trigger cho 1 hành động cập nhật

- For hoặc After: nếu tạo trigger thông thường

- Insert, Update, Delete: Hành động cập nhật dữ liệu tác động vào bảng để kích hoạt Trigger

Trang 15

+ Khi Delete thực thi, dữ liệu bị xoá sẽ sao chép vào bảng Delete BảngDelete Imsert lúc này không có dữ liệu Imsert

+ Khi Insert thực thi, dữ liệu được thêm sẽ sao chép vào bản Inserted Inserted

Bảng Deleted lúc này không có dữ liệu.Deleted lúc này

+ Khi Update thực thi, dữ liệu cũ chịu tác động của câu lệnh sẽ được sao chép vào bảng Deleted, còn trong Deleted

bảng Inserted sẽ là các dòng sau khi đã được cập nhật Inserted

Trang 16

I.2.4 Trigger lồngnhau:

- Hành động cậpnhật -> Trigger -> Cập nhật bảng khác -> Trigger trên bảng tương ứng.

- Instead of trigger không phát sinh lại trên chính bảng mà nó liên kết.

- Hành động cập nhật ->Instead of trigger

->gọi câu lệnh cập nhật xuống bảng ->

Instead of trigger

Trang 17

II.1 Khái niệm về Cursor :

_ Các lệnh của SQL Server làm việc trên một nhóm nhiều mẫu tin

_ Cursor là cấu trúc giúp làm việc với từng mẫu tin tại một thời điểm Hay cursor là đối tượng dùng để chứa dữ liệu lấy từ CSDL, giống đối tượng recordset trong VB

II.2 Thứ tự các thao tác khi xử lý dữ liệu trên Cursor :

II.2.1 Định nghĩa biến CursorII.2.2 Mở Cursor

II.2.3 Duyệt và xử lý dữ liệu trên CursorII.2.4 Đóng và giải phóng Cursor

II CURSOR :

Trang 18

II.2.1 Định nghĩa biến Cursor bằng lệnh DECLARE :

Cú pháp khai báo biến Cursor :

Declare Tên_cursor Cursor

[Local/Global]

[Forward_only/Scroll]

[Static/Dynamic/Keyset]

[Read_only/Scroll_lock]

For câu lệnh Select

[For update [Of danh sách cột]]

Trang 19

_ Có hai loại Cursor: Local và Global

LoCal :chỉ sử dụng trong phạm vi khai báo(mặc định)

Global :sử dụng chung cho cả kết nối

_ Cách di chuyển mẫu tin trong Cursor: Forward only và Scroll

ForWard_Only :chỉ di chuyển một hướng từ trước ra

sau(mặcđịnh)

Scroll : di chuyển tùy ý

_ Cách quản lý dữ liệu trong Cursor: Static, Dynamic và Keyset

Static : dữ liệu trên Cursor không thay đổi mặc dù dữ liệu trong

bảng nguồn thay đổi(mặc định)

Dynamic :dữ liệu trên Cursor sẽ thay đổi khi dữ liệu trong bảng

nguồn thay đổi

KeySet :giống Dynamic nhưng chỉ thay đổi những dòng bị cập nhật

Trang 20

* Xử lý :

Read_Only :chỉ đọc(mặc định)

Scroll_Lock : đọc/ghi

*Câu lệnh select : không chứa các mệnh đề Into,Compute,Compute by

*Danh sách cột cập nhật : là danh sách các cột sẽ thay đổi được

II.2.2 Sử dụng lệnh OPEN để mở ra Cursor đã định nghĩa trước đó:

Cú pháp: Open tên_Cursor

II.2.3 Đọc và xử lý trên từng dòng dữ liệu bên trong cursor:

Cú pháp : Fetch [ Next / Prior / First / Last

/ Absolute n / Relative n ] From Tên_Cursor

[Into Danh_sách_biến]

Trang 21

Trong đó:

Hướng di chuyển :

Next : Di chuyển về sau

Prior: Di chuyển về trước

First : Di chuyển về đầu

Last : Di chuyển về cuối

Absolute n: di chuyển đến mẩu tin thứ n tính từ mẩu tin đầu tiên Nếu n<0 : tính từ mẩu tin cuối

Relative n :di chuyển đến mẩu tin thứ n tính từ mẩu tin hiện

hành

Trong quá trình di chuyển để kiểm tra việc di chuyển có thành

công hay không, ta kiểm tra biến hệ thống @@Fetch_Status nếu

@@Fetch_Status <>0 thất bại

Trang 22

II.2.4 Đóng Cursor lại bằng lệnh CLOSE và DEALLOCATE :

_ Sau khi Close , có thể mở lại

Cú pháp: Close Tên_Cursor

_ Giải phóng CurSor khỏi bộ nhớ :

Cú pháp: Deallocate Tên_Cursor

Trang 23

Thanks for Listening !

Ngày đăng: 06/03/2014, 15:20

HÌNH ẢNH LIÊN QUAN

Bảng  Inserted sẽ là các dòng sau khi đã được cập nhật.  Inserted - Hệ Quản Trị Cơ Sở Dữ Liệu - TRIGGER & CURSOR pdf
ng Inserted sẽ là các dòng sau khi đã được cập nhật. Inserted (Trang 15)
Bảng  Deleted lúc này không có dữ liệu. Deleted lúc này - Hệ Quản Trị Cơ Sở Dữ Liệu - TRIGGER & CURSOR pdf
ng Deleted lúc này không có dữ liệu. Deleted lúc này (Trang 15)
Bảng nguồn thay đổi(mặc định) - Hệ Quản Trị Cơ Sở Dữ Liệu - TRIGGER & CURSOR pdf
Bảng ngu ồn thay đổi(mặc định) (Trang 19)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w