1. Trang chủ
  2. » Tất cả

store-procedure and trigger

9 1,6K 22
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Store Procedure và Trigger
Tác giả Trần Văn Đồng
Người hướng dẫn Lê Nguyên
Trường học Trường Đại Học
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 9
Dung lượng 147 KB

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

Nội dung

Tác dụng của Store Procedure Stored Procedure cũng là những thủ tục được viết sẵn bằng SQL chính vì thế chúng có thể giúp người sử dụng có thể tạo các thủ tục để lấy dữ liệu cần thay vì

Trang 1

Báo cáo tìm hiểu về store procedure và trigger

Sinh viên thực hiện: Trần Văn Đồng Giáo viên hướng dẫn: Lê Nguyên Sinh

I Store procedure

Định nghĩa

Stored Procedure là những thủ tục đặc biệt được viết bằng các câu lệnh SQL để thực hiện công việc gì đó và nó có thể được dùng lại Stored Procedure được lưu trữ trong siêu dữ liệu của cơ sở dữ liệu

Stored Procedure gần giống như UDF( User Difine Function – Chức năng người dùng) Điểm khác biệt lớn nhất là các Stored Procedure thì được viết bằng ngôn ngữ SQL còn UDF thì không Và Stored Procedure thì phải được gọi bởi câu lệnh CALL procedure hoặc EXECUTE procedure

2 Tác dụng của Store Procedure

Stored Procedure cũng là những thủ tục được viết sẵn bằng SQL chính vì thế chúng có thể giúp người sử dụng có thể tạo các thủ tục để lấy dữ liệu cần thay vì sử dụng các câu truy vấn nhỏ lẻ trên cửa sổ query Hơn nữa, các chương trình sử dụng Stored Procedure sẽ ngắn gọn và dễ sửa lỗi hơn

Stored Procedure được lưu trữ trên cơ sở dữ liệu sau khi tạo ra và chúng ta có thể sử dụng lại nó bắt cứ khi nào cần nên sẽ giảm thời gian viết code truy vấn khi quản trị cũng như khai thác cơ sở dữ liệu

Các Stored Procedure được biên dịch sẵn nên nó làm giảm thời gian thực thi của chương trình

3 Nguyên tắc làm việc của Store Procedure

Stored Procedure được thực thi sau khi ta gọi câu lệnh CALL procedure (tên Stored Procedure) hoặc là EXECUTE procedure(tên Stored Procedure) Các câu lệnh trong Store Procedure được thực thi và kết quả trả về sau khi các Stored Procedure được thực thi thường là một tập hợp và tập các kết quả này có thể sẽ được xử lý bởi một Stored Procedure khác hoặc các chương trình ứng dụng hoặc là có thể kết hợp với các tập kết quả khác

4 Các thành phần Stored Procedures

4.1 Trong Mysql

Cú pháp của Stored Procedure:

CREATE PROCEDURE

(Khai báo tham số đầu vào) BEGIN

Khai báo biến;

Khởi tạo biến;

Các câu lệnh ;

Trang 2

Trong đó:

Khai báo tham số

IN/OUT tên tham số kiểu dữ liệu

Tương ứng với tham số đầu vào của Stored Procedure thì ta chọn IN Còn nếu khai báo tham số đầu ra thì ta chọn OUT kiểu dữ liệu ở đây là các kiểu đã được định nghĩa trong mysql Ví dụ: IN STT INTEGER Trong ví dụ này: tên tham số là STT, kiểu dữ liệu là INTEGER STT là một tham số đầu vào

khai báo biến

DECLARE tên biến kiểu dữ liệu

Các biến phải khai báo trong khối BEGIN/SEND Và nó không được bắt đầu bằng @ Kiểu dữ liệu ở đây cũng tương tự như trong khai báo tham số

Phạm vi của biến nằm trong khối BEGIN/END mà nó được khai báo

Ví dụ: DECLARE MSV VARCHAR(6) Trong ví dụ này: MSV là tên biến, kiểu dữ liệu là VARCHAR(6)

Khởi tạo biến

Để đặt giá trị mặc định cho biến ngay khi khai báo chúng ta có thể sử dụng từ khóa DEFAULT Ví dụ: DECLARE GIOITINH VARCHAR DEFAULT NAM;

Nếu không sử dụng cách khởi tạo với giá trị mặc định lúc khai báo ta có thể sử dụng câu lệnh sau: SET tên biến = giá trị

Ví dụ: MSV= ’5617009’

Các câu lệnh

Trong Stored Procedure có thể gồm một(Có thể không có câu lệnh SQL nào) hoặc một khối câu lệnh SQL được xây dựng từ các câu lệnh SQL cơ bản kết hợp với các câu lệnh sau:

Câu lệnh điều khiển

Rẽ nhánh

If btdk then khối câu lệnh else khối câu lệnh end if;

Khối câu lệnh ở đây có thể là một hoặc nhiều câu lệnh(câu lệnh SQL) Nếu có nhiều

câu lệnh thì các câu lệnh phải được đặt trong khối BEGIN/END

CASE BIẾN

WHEN giá trị1 THEN khối câu lệnh;

WHEN giá trị2 THEN khối câu lệnh;

WHEN giá trị n THEN khối câu lệnh;

ELSE khối câu lệnh;

END CASE;

Câu lệnh lặp

While btdk do

Trang 3

khối câu lệnh;

END WHILE;

REPEAT

Khối câu lệnh;

UNTIL btdk

END REPEAT;

LOOP … END LOOP với IF và LEAVE

loop_label: LOOP

Khối câu lệnh;

IF btdk THEN LEAVE loop_label;

END IF;

END LOOP ; Label: Là nhãn đánh dấu một mốc nào đó trong chương trình Trong cú pháp vòng lặp

LOOP loop_label là một nhãn Ta có thể tạo một nhãn bất kỳ và sử dụng nó ở bất cứ chỗ nào trong chương trình chỉ với tên nhãn Ví dụ: label1: BEGIN khối câu lệnh END;

LEAVE, ITERATE là từ khóa để chỉ ra chương trình không quay trở lại nhãn được

viết phía đằng sau nó Trong cú pháp của câu lệnh lặp trên nếu thỏa mãn điều kiện trong câu lệnh if thì chương trình sẽ thoát khỏi nhãn loop_label Hay nói cách khác là thoát khỏi vòng lặp

GOTO

Cú pháp: GOTO nhãn;

Chương trình sẽ chuyển điều khiển đến vị trí có nhãn là tên phía sau GOTO

4.2 Trong SQL Server

Cú pháp của Stored Procedure:

CREATE PROC[EDURE][owner] procedure_name [;number]

[{@parameter data_type}

[VARYING][=default][OUTPUT]

][,…n]

[WITH{RECOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION}]

[FOR REPLICATION]

AS sql_statement[…n]

Trong đó:

Owner: tên của user sở hữu Stored Procedure Nó phải là tên của user hiện tại Hoặc

là tên một user đang sử dụng trong hệ thống các user

procedure_name: là tên của Stored Procedure Procedure_name phải tuân theo quy

tắc khai báo định danh của cơ sở dữ liệu

Các local procedure tạm thời thường phải bắt đầu bằng một dấu #, còn các global procedure tạm thời thường có tên bắt đầu bởi hai dấu # Và tên các Stored Procedure kể cả các dấu # có độ dài tối đa là 128 kí tự

Trang 4

;numbeer: là một số nguyên tùy ý dùng để gộp nhóm các Stored Procedure có cùng tên Chính vì thế, ta có thể chỉ dùng một câu lênh để xóa đồng thời các Store Procedure này

@parameter: là một biến trong Stored Procedure Trong một Stored Procedure có thể

có từ 2 đến 100 biến và các biến bắt đầu bằng ký tự @ Mỗi biến có phạm vi hoạt động trong Stored Procedure chứa nó vì thế Tên biến có thể giống nhau giữa các biến trong các Stored Procedure khác nhau Mặc định mỗi biến trong Stored procedure có phạm vi hoạt động không đổi có nghĩa là nó không thể sử dụng được trong các bảng, các cột hoặc trong các đối tượng cơ sở dữ liệu khác ngoài Stored Procedure

data_type: Là kiểu dữ liệu của biến Tất cả các kiểu dữ liệu kể trừ các kiểu dữ liệu sử

dụng trong bảng đều có thể trở thành kiểu dữ liệu trong Stored Procedure Tuy nhiên, kiểu con trỏ chỉ được sử dụng trong các biến đầu ra của Stored Procedure

Các kiểu dữ liệu có thể sử dụng là:

bigint: là kiểu số nguyên có khoảng giá trị từ -2^63 đến 2^63 - 1

int: cũng là kiểu nguyên có khoảng giá trị từ -2^31 đến 2^31 -1

smallint là kiểu nguyên có giá trị từ -2^15 đến 2^15 – 1

tinyint là kiểu nguyên có giá trị từ 0 đến 255

bit là kiểu nguyên có giá trị 0 hoặc 1

decimal là kiểu số thập phân có giá trị từ -10^38 + 1 đến 10^38 + 1

nummeric tương tự như kiểu decimal

money: là kiểu tiền tệ có giá trị từ -2^63 đến 2^63 -1

float: là kiểu số thực có giá trị từ -1.79E + 308 đến -2.23E -308, 0 và 2.23E + 308 đến 1.79E +308

Các kiểu dữ liệu character Strings

char: là kiểu có độ dài cố định không gồm các ký tự unicode và có độ dài lớn nhất là

8000 ký tự

varchar là kiểu dữ liệu có đội dài thay đổi, không gồm các ký tự unicode và có độ dài lớn nhất là 8000 ký tự

text: có độ dài không cố định và không gồm các ký tự unicode với độ dài lớn nhất là 2^31 – 1 ký tự

Các kiểu dữ liệu unicode Character Strings: nchar, nvarchar, ntext tương tự như char, varchar, text và chúng chỉ khác nhau ở chỗ nchar, nvarchar, ntext có thể có các ký tự unicode

Ngoài ra còn có các kiểu dữ liệu khác như images, table, timestamp( kiểu dữ liệu này lưu trữ thời gian diễn ra việc update các bản ghi trong bảng), sql_variant

Chú ý: không giới hạn số lượng biến output và nó còn có thể có kiễu dữ liệu con trỏ

VARYING

Từ khóa này chỉ ra tập kết quả trả ra có thể coi như là các biến đầu ra Tập kết quả này

có thể được gắn vào một biến con trỏ nào đó để sử dụng cho các ứng dụng hoặc là các Stored Procedure khác

default

Trang 5

Chỉ ra biến đầu ra sẽ nhận giá trị mặc định.

OUTPUT

Chỉ ra các biến trả về của Stored Procedure Stored Procedure có thể trả về các kiểu

dữ liệu như là: Text, ntext và image hoặc là kiểu con trỏ

n

Số các biến có thể từ 0 đến 100 biến

{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}

RECOMPLE

Từ khóa này để chỉ ra bản thân Stored Procedure chỉ được dịch khi chạy và nó không được dịch sẵn và lưu trữ trong bộ nhớ

ENCRYPTION

Khi sử dụng từ khóa này Stored Procedure sẽ được mã hóa và ghi lại Nếu như muốn

sử dụng lại Stored Procedure này thì cần phải giải mã nó Các ký tự mã hóa thường được lưu trữ trong bảng Syscommands của hệ thống Và khi giải mã có thể gặp phải một số sai sót

AS

Chỉ ra các hoạt động của Stored Procedure Phía sau nó sẽ là các câu lệnh SQL

n

Chỉ ra là sẽ có nhiều câu lệnh SQL phía sau AS

5 Các loại Store Procedure

5.1 System Stored Procedure

Nhiều chức năng quản trị trong SQL Server được thực thi thông qua một loại thủ tục đặc biệt Thủ tục đó thường được gọi là System Stored Procedure System Stored Procedures thường được xây dựng và lưu trữ trong cơ sở dữ liệu nguồn và tên của nó thường có tiếp đầu ngữa là SP_ System Stored Procedure thường có mặt trong mọi thệ thống cơ sở dữ liệu của người sử dụng

Là những Stored Procedure chứa trong Master database và thường bắt đầu bằng tiếp đầu ngữ Sp_ Các Stored Procedure này thuộc loại built-in và chủ yếu dùng trong việc quản lý database(administration) và security

5.2 User – defined Stored Procedures

Là những module hoặc là những chức năng thường dùng được khai báo dưới dạng một hàm để rút ngắn code chương trình Một Stored Procedure có thể có biến đầu vào và trả ra một kết quả dạng bảng, kết quả thuộc một kiểu dữ liệu nào đó hoặc

là một thông điệp đến các client Nó có thể sử dụng các câu lệnh DDL hoặc là DML

và trả về tập các biến

5.3 Extended Stored Procedure

Cho phép chúng ta tạo các Stored Procedure bằng một ngôn ngữ khác ví dụ như C Sau đó biên dịch Stored Procedure này ra file DLL và SQL Server có thể load và chạy

7 Ví dụ minh hoạ

Trang 6

1 Định nghĩa

Trigger là một đối tượng được sử dụng trong cơ sở dữ liệu Nó có thể coi là một sự kiện xảy ra sau khi có một thay đổi nào đó đối với bảng dữ liệu

Dưới góc độ nào đó, Trigger có thể coi là trường hợp đặc biệt của Store procedure Điểm khác biệt giữa Store procedure và Trigger: Trigger chỉ được sử dụng trong phạm

vi bảng dữ liệu và nó chỉ được kích hoạt khi có các thao tác insert, delete hoặc là update Khi tạo Trigger bạn chúng ta cân phải chỉ ra hoạt động của nó thông qua các câu lệnh

2 Tác dụng của Trigger

Trigger được sử dụng để: Khi có một thay đổi nào đó đối với bảng trigger sẽ được kích hoạt và nó sẽ làm nhiệm vụ kiểm tra dữ liệu, đồng bộ hóa dữ liệu, đảm bảo các mối quan hệ giữa các bảng

Trigger được sử dụng để đảm bảo sự toàn vẹn dữ liệu trong cơ sở dữ liệu bằng cách các câu lệnh cho phép người quản trị có thể kiểm tra dữ liệu khi có sự thay đổi

dữ liệu

3 Nguyên tắc làm việc của Trigger

Trigger thường được kích hoạt khi có các sự kiện sau xảy ra:

- chèn (Insert), xóa (Delete) hay cập nhật (Update) một bảng

- Khởi động, tắt hệ thống hoặc là hệ thống gặp một lỗi nào đó

- User đăng nhập hoặc thoát khỏi hệ thống

4 Các thành phần Trigger

4.1 Trigger trong MYSQL

Cú pháp:

CREATE TRIGGER trigger_name;

ON table | view

Trang 7

[WITH ENCRYPTION]

{FOR|ALTER|INSTEAD OF}{[DELETE][,][INSERT][,][UPDATE]}

AS Sql_statement

Trong đó:

WITH ENCRYPTION: dùng để chặn người dùng khác không được xem nội dung của Trigger

ALTER dùng để chỉ ra Trigger này là loại ALTER có nghĩa là nó sẽ được thực thi sau khi câu lệnh sql kích hoạt Trigger được thực hiện thành công

ALTER Trigger là kiểu mặc định khi sử dụng từ khóa FOR

Từ khóa ALTER không được sử dụng với các Trigger trên view

INSTEAD OF: Khi sử dụng từ khóa này, Trigger sẽ được thực hiện thay vì thực hiện câu lệnh sql kích hoạt Trigger Trigger loại này có thể được sử dụng trên view

DELETE,INSERT,UPDATE: để chỉ ra Trigger sẽ được thực hiện khi ta sử dụng thao tác nào với bảng dữ liệu

4.2 Trigger trong SQL Server

Trigger gồm 3 phần chính:

 Sự kiện Trigger

Đây có thể là một câu lệnh truy vấn, một sự kiện trong database hoặc là một sự kiên liên quan đến user mà có thể kích hoạt Trigger Các sự kiện kích hoạt Trigger đã được trình bày ở phần 3

Ví dụ:

UPDATE OF parts_on_hand ON inventory

UPDATE OF MASV ON SINHVIEN

Trigger có phần sự kiện kích hoạt trên sẽ được kích hoạt khi trường sinh viên được UPDATE

Một Trigger còn có thể sử dụng với nhiều sự kiện: … INSERT OR UPDATE

OR DELETE OF MASV… Khi sử dụng Trigger với nhiều sự kiện như thế thì Trigger

sẽ được kích hoạt khi một trong các Sự kiện INSERT hoặc là UPDATE hoặc là DELETE xảy ra đối với trường sinh viên

 Điều kiện Trigger

Thường được chỉ ra bởi một biểu thức boolean và Trigger sẽ được kích hoạt khi biểu thức đó nhận giá trị True Nó sẽ không được kích hoạt khi biểu thức nhận giá trị false hoặc là không xác định Ví dụ: LENGHT(MASV)>6

 hoạt động Trigger

Thường là một thủ tục được viết bằng SQL hoặc PL/SQL gồm các câu lệnh sẽ được thi hành sau khi các sự kiện kích hoạt Trigger thỏa mãn:

Sự kiện Trigger xảy ra

Điều kiện Trigger trả về true

Cũng giống như Store procedure các hoạt động Trigger cũng có thể gồm:

- Các câu lệnh SQL, PL/SQL, hoặc java

- Gọi các Store procedure

Trang 8

Hình dưới là một ví dụ về Trigger và chỉ ra các thành phần của một Trigger

5 Các loại Trigger

5.1 Row Triggers và Statement Triggers

Row Trigger là Trigge được kích hoạt khi có sự tác động đến các dòng bản ghi trong bảng dữ liệu Mỗi khi có một bản ghi thay đổi thì Row Trigger sẽ được kích hoạt một lần

Statement Trigger Là Trigger chỉ xảy ra một lần khi có sự kiện Trigger xảy ra( Tức là nó chỉ xảy ra một lần sau khi sư kiện đó xảy ra rồi thôi) Statement trigger

có ích khi mà dữ liệu trong phần hoạt động của nó không phụ thuộc vào dữ liệu miễn

là các sự kiện Trigger xảy ra hoặc là các bản ghi bị thay đổi

5.2 Before và Alter Triggers

5.3 Instead of Triggers

5.4 Trigger trên System Events và User Event

7 Một số chú ý khi sử dụng Trigger

Trigger rất có ích khi sử dụng để đảm bảo cho các cơ sở dữ liệu hoạt động an toàn

và có hiệu quả nhưng chúng ta cũng cần phải chú ý khi sử dụng nó:

- Tránh sử dụng các Trigger mà có khả năng kích hoạt lẫn nhau ví dụ như trong hình dưới đây

Trang 9

Khi sử dụng các Trigger như trên tạo ra một sự bùng nổ Trigger và làm cho người

sử dụng không thể kiểm soát được các hoạt động của nó dẫn tới hậu quả không lường trước được

8 Ví dụ minh hoạ

Ngày đăng: 12/01/2013, 15:41

HÌNH ẢNH LIÊN QUAN

Hình dưới là một ví dụ về Trigger và chỉ ra các thành phần của một Trigger - store-procedure and trigger
Hình d ưới là một ví dụ về Trigger và chỉ ra các thành phần của một Trigger (Trang 8)

TỪ KHÓA LIÊN QUAN

w