Tải bản đầy đủ - 0 (trang)
Bố cục của đề tài

Bố cục của đề tài

Tải bản đầy đủ - 0trang

CHƢƠNG 1

NGHIÊN CỨU TỔNG QUAN

1.1. Những vấn đề chung về quản lý nhân sự

1.1.1. Khái niệm về quản lý nhân sự

Ngày nay, khi nhân loại ước vào nền kinh tế tri thức người ta bắt đầu nói

nhiều đến nguồn lực con người là yếu tố cơ ản để phát triển xã hội tăng trưởng kinh

tế thì đối với các nhà quản lý ở mọi lĩnh vực, vấn đề quản lý nhân sự được đặt lên hàng

đầu. Khi người ta nói đến một tổ chức, một đơn vị làm ăn thất bại, thua lỗ, khơng phải

vì thiếu vốn, thiếu trang thiết bị, thiếu cơ sở vật chất, mặt bằng … mà người ta nghĩ

ngay đến người lãnh đạo, thủ trưởng của đơn vị đó khơng đủ năng lực điều hành cơng

việc, thiếu trang bị về kiến thức quản lý nhân sự hoặc thiếu kinh nghiệm trong chiến

lược con người.

Vậy quản lý nhân sự là gì? Quản lý nhân sự là sự khai thác và sử dụng nguồn

nhân lực của một tổ chức hay một công ty một cách hợp lý và hiệu quả. Bao gồm các

nội ung cơ ản sau đây

 Phân tích cơng việc

 Tuyển dụng nhân viên

 Đào tạo và nâng cao năng lực chuyên môn cho nhân viên

 Nâng cao hiệu quả sử ung lao động thông qua việc sử dụng hệ thống kích

thích vật chất và tinh thần đối với nhân viên.

1.1.2. Những vấn đề trong công tác quản lý nhân sự

Quản lý nhân sự là công việc thực hiện trên 1 tập dữ liệu lớn được chia ra thực

hiện ở nhiều bộ phận khác nhau. Việc quản lý nhân sự thường gặp phải những vấn đề

sau:

 Sai sót trong việc điều chỉnh, tìm kiếm dữ liệu

 Mất nhiều thời gian để hồn thành cơng việc do phải làm việc với 1 lượng

lớn dữ liệu

 Dữ liệu không nhất quán giữa các bộ phận làm việc

1.2. Tổng quan về khung nhìn thực

1.2.1. Khái niệm

Khung nhìn thực (KNT) là một kỹ thuật giúp cải thiện và nâng cao tốc độ thực

thi đối với các truy vấn phức tạp, có tần suất sử dụng cao trên một lượng dữ liệu lớn. Ý

tưởng của KNT là dựa trên các bảng kết quả sẵn có để trả lời truy vấn một cách nhanh

chóng mà khơng cần thực thi lại truy vấn. Đối với những truy vấn phức tạp bao gồm



nhiều phép nối và các hàm thống kê, hiệu quả sử dụng KNT càng rõ rệt đặc biệt khi

áp dụng trên một lượng dữ liệu đủ lớn o đã ỏ qua các ước thực thi phép nối và các

hàm thống kê vốn là những thành phần chiếm nhiều chi phí trong quá trình thực thi

truy vấn. Đến nay, kỹ thuật KNT đã được triển khai trên các hệ quản trị cơ sở dữ liệu

HTQCS thương mại lớn như Oracl Microsoft SQ S rv r I M 2 … và

ngày càng được ứng dụng rộng rãi.

Một khung nhìn vi w có thể được x m như là một ảng ảo” trong cơ sở ữ

liệu có nội ung được định nghĩa thơng qua một truy vấn câu lệnh SE ECT . Điểm

khác iệt giữa khung nhìn và ảng là khung nhìn khơng được x m là một cấu trúc

lưu trữ ữ liệu tồn tại trong cơ sở ữ liệu. Thực chất ữ liệu quan sát được trong

khung nhìn được lấy từ các ảng thơng qua câu lệnh truy vấn ữ liệu.

V dụ:

Khung nhìn thực SNV được mô tả như sau

CREATE VIEW DSNV(manv,hodem,ten,tuoi,tenPB) AS

SELECT masv, hodem, ten,DATEDIFF(YY, ngaysinh, GETDATE()),

tenpb

FROM nhanvien, pban

WHERE nhanvien.mapb = lop.mapb

Khi khung nhìn đã được định nghĩa ta có thể sử ụng câu lệnh SE ECT

để truy vấn ữ liệu từ khung nhìn như đối với các ảng. Khi trong câu truy vấn

xuất hiện khung nhìn hệ quản trị CS s ựa vào định nghĩa của khung nhìn để

chuyển yêu cầu truy vấn ữ liệu liên quan đến khung nhìn và việc truy vấn ữ

liệu được thực hiện

ởi yêu cầu tương đương trên các ảng.

Việc sử ụng khung nhìn trong cơ sở ữ liệu đ m lại các lợi ch sau đây ảo

mật ữ liệu đơn giản hoá các thao tác truy vấn ữ liệu tập trung và đơn giản hoà ữ

liệu độc lập ữ liệu.

Tuy nhiên việc sử ụng khung nhìn cũng tồn tại một số nhược điểm

- o hệ quản trị cơ sở ữ liệu thực hiện việc chuyển đổi các truy vấn trên khung

nhìn thành những truy vấn trên các ảng cơ sở nên nếu một khung nhìn được định

nghĩa ởi một truy vấn phức tạp thì s ẫn đến chi ph về mặt thời gian khi thực hiện

truy vấn liên quan đến khung nhìn s lớn.

- Mặc thơng qua khung nhìn có thể thực hiện được thao tác ổ sung và cập

nhật ữ liệu cho ảng cơ sở nhưng chỉ hạn chế đối với những khung nhìn đơn giản.

Đối với những khung nhìn phức tạp thì thường khơng thực hiện được; hay nói

cách khác là ữ liệu trong khung nhìn là chỉ đọc.



Một khung nhìn có thể được cụ thể hóa ằng cách lưu trữ các ộ ữ liệu của

các khung nhìn trong cơ sở ữ liệu được gọi là khung nhìn thực. KNT là hiện

thân tự nhiên của tưởng t nh toán lại và ộ nhớ đệm trong cơ sở ữ liệu. Thay vì t

nh tốn một truy vấn từ đầu từ ữ liệu cơ ản hệ thống cơ sở ữ liệu có thể sử ụng

kết quả đã được t nh tốn lưu trữ và uy trì.

Giống như một ộ nhớ cach ộ nhớ đệm – nơi lưu trữ các ữ liệu nằm chờ các

ứng ụng hay phần cứng xử l một KNT cung cấp truy cập ữ liệu nhanh; sự khác

iệt tốc độ có thể là rất quan trọng trong các ứng ụng mà tốc độ truy vấn cao và

khung nhìn rất phức tạp rằng nó khơng thể t nh tốn lại khung nhìn cho mỗi lần truy

vấn. KNT là hữu ch trong các ứng ụng như kho ữ liệu máy chủ sao chép iên niên

sử hoặc các hệ thống ghi ữ liệu trực quan ữ liệu và hệ thống điện thoại i động.

Kiểm tra t nh ràng uộc tồn vẹn và tối ưu hóa truy vấn cũng có thể được lợi ch từ

KNT.

Tuy nhiên việc sử ụng KNT cũng có những nhược điểm; đó là KNT làm tiêu

tốn không gian lưu trữ và phải được cập nhật khi các ảng chi tiết cơ ản được sửa

đổi.

1.2.2. Phân loại



Phân loại khung nhìn thực th o một số loại [15] như sau

1.2.2.1. KNT bản sao (snapshot materialized view)

Mô tả KNT ản sao

- Chiến lược cập nhật: kiểu KNT được cập nhật th o yêu cầu

- Cài đặt: KNT ản sao được cài đặt khá ễ àng ằng cách gọi hàm sau

r fr sh_matvi w . Khi gọi hàm r fr sh_matvi w HQT CS s tự động xóa

nội ung của KNT trước đó rồi thực hiện truy vấn khung nhìn và điền kết quả

vào lại KNT với nội ung hiện tại của khung nhìn đó.

1.2.2.2. KNT hăm hở (eager materialized view)

Mô tả KNT hăm hở

- Chiến lược cập nhật: Chúng được cập nhật ngay sau khi có ất kỳ thay

đổi nào được thực hiện với cơ sở ữ liệu đó mà s ảnh hưởng đến nó. Điều này

được thực hiện với một hệ thống k ch hoạt trên tất cả các ảng cơ sở. Phụ thuộc

vào hàm thay đổi được như now() s gây ra cho KNT trở nên sai lệch nhưng

có thể được sửa chữa với những làm mới nhỏ mà chỉ ảnh hưởng đến các hàng.

- Cài đặt: Việc thực thi KNT hăm hở được thực hiện qua hai hàm sau

o mv_refresh_row(PK): cập nhật ộ giá trị với khóa ch nh PK



o mv_refresh(): sử ụng nếu khung nhìn ựa vào hàm thay đổi được như

now ”

Khi đó các trigg r với các ẫy sự kiện trong các HQT CS tương ứng

với các truy vấn INSERT UP ATE và E ETE s được gọi thông qua hàm

mv_r fr sh_row một cách th ch hợp.

1.2.2.3. KNT rất lười (very lazy materialized view):

Mơ tả khung nhìn thực rất lười như sau

- Chiến lược cập nhật: Chúng s ghi lại các hàng trong KNT cần phải

được cập nhật nhưng s không cập nhật cho đến khi hướng đến. Điều này s rất

hữu ch nếu ạn đang cam kết nhiều giao ịch mà ảnh hưởng đến KNT đó

nhưng khơng muốn thực sự cập nhật KNT cho đến sau này. Chúng có chức năng

tương đương với các KNT ản sao.

- Cài đặt: Việc cài đặt KNT kiểu rất lười qua các ước sau

o Ghi tất cả những thay đổi trên các ảng cơ sở trong một ản ghi sử ụng

một số trigg r và hàm

o Cài đặt một hàm "matvi w_r fr sh " mà đọc ản ghi đó và cập nhật

KNT th o anh sách các thay đổi trong ản ghi

1.2.2.4. KNT lười (lazy materialized view):

Mơ tả khung nhìn thực lười như sau

- Chiến lược cập nhật: Chúng s ghi lại các hàng trong KNT cần phải

được cập nhật và cập nhật chúng khi giao ịch được thực hiện. Điều này hữu

ch nếu nhiều sự thay đổi s ảnh hưởng đến các hàng giống nhau và cũng s cho

phép những thay đổi được thực hiện nhanh hơn nhiều.

- Cài đặt: Tương tự như KNT rất lười việc gọi và thực thi khung nhìn thực

thơng qua hàm matvi w_r fr sh ” trong đó cơ chế gọi s được gọi th o cam

kết và không th o yêu cầu.

1.3. Tổng quan về cập nhật gia tăng, đồng bộ khung nhìn thực

Bạn đã iết đầu ra của câu lệnh SELECT là một tập kết quả thể hiện ưới dạng

một bảng ảo, bạn có thể lưu trữ bảng ảo bằng cách sử dụng View (Khung nhìn).

Những bảng từ đó khung nhìn được tạo được gọi là bảng co sở. Những bảng cơ sở này

lại có thể là thuộc về cơ sỡ dữ liệu khác nhau. Mỗi View có thể có tối đa 1024 cột và

những hàng và cột của Vi w được sinh ra ở một dạng động khi Vi w được tham chiếu.



View chỉ áp dụng cho câu lệnh SELECT, các cột của Vi w cũng có thể được

lấy từ các cột của View khác.

Bạn có thể có những thao tác trên Vi w tượng tự trên bảng như SE ECT

INSERT, UPDATE, DELETE.

Tổng quan về cập nhật gia tăng

Một Vi w Khung nhìn có thể được x m như là một ảng ảo trong CS có nội

ung được định nghĩa thơng qua một câu lệnh truy vấn SE ECT .

– Như vậy một Vi w trông giống như một Ta l ảng với một tên khung

nhìn và một tập các ng cột. Điểm khác iệt giữa Vi w và Ta l là Vi w không

được x m là một cấu trúc lưu trữ ữ liệu tồn tại trong CS .

– Lợi ch của việc sử ụng Vi w trong CS

+ ảo mật ữ liệu Người sử ụng được cấp phát quyền trên các Vi w với

những phần ữ liệu mà người sử ụng được phép -> Hạn chế việc người sử ụng

truy cập trực tiếp ữ liệu.

+ Đơn giản hóa các thao tác truy vấn ữ liệu Một Vi w đóng vai tr như

một đối tượng tập hợp ữ liệu từ nhiều ảng khác nhau vào trong một ảng ->

Người sử ụng có thể thực hiện các yêu cầu truy vấn ữ liệu một cách đơn giản

từ Vi w thay vì phải đưa ra những câu truy vấn phức tạp.

+ Tập trung và đơn giản hóa ữ liệu Thơng qua Vi w ta có thể cung cấp

cho người ng những cấu trúc đơn giản ễ hiểu về ữ liệu đồng thời giúp cho

người ng tập trung hơn trên những phần ữ liệu cần thiết.

+ Độc lập ữ liệu Một Vi w có thể cho phép người ng có được cái nhìn về

ữ liệu độc lập với cấu trúc của các ảng trong CS cho các ảng cơ sở có ị thay

đổi phần nào về cấu trúc.

– Một số nhược điểm của việc sử ụng Vi w

+ o hệ quản trị CS thực hiện chuyển đổi các truy vấn trên Vi w thành những

truy vấn trên các ảng cơ sở nên nếu một Vi w được định nghĩa ởi một truy vấn

phức tạp thì s ẫn đến chi ph về mặt thời gian khi thực hiện truy vấn liên quan đến

Vi w lớn.

+ Mặc thơng qua Vi w có thể thực hiện được các thao tác ổ sung và cập

nhật

ữ liệu cho ảng cơ sở nhưng chỉ hạn chế đối với những Vi w đơn giản. Đối với các



Vi w phức tạp thì thường khơng thực hiện được hay nói cách khác ữ liệu trong Vi w

chỉ là đọc.

1.4. Tổng quan về cập nhật gia tăng, đồng bộ khung nhìn thực

Bạn đã iết đầu ra của câu lệnh SELECT là một tập kết quả thể hiện ưới dạng

một bảng ảo, bạn có thể lưu trữ bảng ảo bằng cách sử dụng View (Khung nhìn).

Những bảng từ đó khung nhìn được tạo được gọi là bảng co sở. Những bảng cơ sở này

lại có thể là thuộc về cơ sỡ dữ liệu khác nhau. Mỗi View có thể có tối đa 1024 cột và

những hàng và cột của Vi w được sinh ra ở một dạng động khi Vi w được tham chiếu.

View chỉ áp dụng cho câu lệnh SELECT, các cột của Vi w cũng có thể được

lấy từ các cột của View khác.

Bạn có thể có những thao tác trên Vi w tượng tự trên bảng như SE ECT INSERT

UPDATE, DELETE.

1.4.1. Tổng quan về cập nhật gia tăng

Một Vi w Khung nhìn có thể được x m như là một ảng ảo trong CS có

nội ung được định nghĩa thơng qua một câu lệnh truy vấn SE ECT .





Như vậy một Vi w trông giống như một Ta l ảng với một tên khung



nhìn và một tập các ng cột. Điểm khác iệt giữa Vi w và Ta l là Vi w không

được x m là một cấu trúc lưu trữ ữ liệu tồn tại trong CS .

– ợi ch của việc sử ụng Vi w trong CS

+ ảo mật ữ liệu Người sử ụng được cấp phát quyền trên các Vi w với

những phần ữ liệu mà người sử ụng được phép -> Hạn chế việc người sử ụng

truy cập trực tiếp ữ liệu.

+ Đơn giản hóa các thao tác truy vấn ữ liệu Một Vi w đóng vai tr như

một đối tượng tập hợp ữ liệu từ nhiều ảng khác nhau vào trong một ảng ->

Người sử

ụng có thể thực hiện các yêu cầu truy vấn ữ liệu một cách đơn giản từ Vi w thay vì

phải đưa ra những câu truy vấn phức tạp.

+ Tập trung và đơn giản hóa ữ liệu Thơng qua Vi w ta có thể cung cấp

cho người ng những cấu trúc đơn giản ễ hiểu về ữ liệu đồng thời giúp cho

người dùng tập trung hơn trên những phần ữ liệu cần thiết.

+ Độc lập ữ liệu Một Vi w có thể cho phép người ng có được cái nhìn

về

ữ liệu độc lập với cấu trúc của các ảng trong CS cho

thay



các ảng cơ sở có ị



đổi phần nào về cấu trúc.

– Một số nhược điểm của việc sử ụng Vi w

+ o hệ quản trị CS thực hiện chuyển đổi các truy vấn trên Vi w thành

những truy vấn trên các ảng cơ sở nên nếu một Vi w được định nghĩa ởi một

truy vấn phức tạp thì s ẫn đến chi ph về mặt thời gian khi thực hiện truy vấn

liên quan đến Vi w lớn.

+ Mặc thơng qua Vi w có thể thực hiện được các thao tác ổ sung và cập

nhật ữ liệu cho ảng cơ sở nhưng chỉ hạn chế đối với những Vi w đơn giản. Đối

với các Vi w phức tạp thì thường khơng thực hiện được hay nói cách khác ữ liệu

trong Vi w chỉ là đọc.

1.4.2. Cập nhập đồng bộ khung nhìn thực

Đối với một số khung nhìn ta có thể tiến hành thực hiện các thao tác cập nhập

ổ sung và xoá ữ liệu. Thực chất những thao tác này s được chuyển thành những

thao tác tương tự trên các ảng cơ sở và có tác động đến những ảng cơ sở.

Về mặt l thuyết để có thể thực hiện thao tác ổ sung cập nhật và xố một

khung nhìn trước tiên phải thoả mãn các điều kiện sau đây

• Trong câu lệnh SE ECT định nghĩa khung nhìn khơng được sử ụng từ khố

DISTINCT, TOP, GROUP BY và UNION.

• Các thành phần xuất hiện trong anh sách chọn của câu lệnh SE ECT phải

là các cột trong các ảng cơ sở. Trong anh sách chọn khơng được chứa các iểu thức

t nh tốn các hàm gộp.

Quan điểm có thể được cập nhật ưới các điều kiện nhất định được đưa ra ưới đây

 Mệnh đề SE ECT khơng được chứa từ khố ISTINCT.

 Mệnh đề SE ECT khơng được chứa các hàm tóm tắt.

 Mệnh đề SE ECT có thể khơng chứa các hàm thiết lập.

 Mệnh đề SE ECT không được chứa các tốn tử được đặt.

 Mệnh đề SE ECT khơng được chứa mệnh đề OR ER Y.

 Mệnh đề FROM không được chứa nhiều ảng.

 Mệnh đề WHERE không được chứa các truy vấn phụ.

 Truy vấn có thể khơng chứa GROUP Y hoặc HAVING.

 Các cột được t nh có thể khơng được cập nhật.



 Tất cả các cột NOT NU từ ảng cơ sở phải được ao gồm trong

vi w để truy vấn INSERT hoạt động.

1.5. Cập nhật khung nhìn thực bằng Trigger trên C trong PostgreSql

1.5.1. Khái niệm về Trigger

Trigger có thể được xem là một dạng đặc biệt của thủ tục nội tại, bởi vì bên

trong nội dung của trigg r lưu trữ các câu lệnh ng để thực hiện một số hành động

nào đó mà người lập trình s chỉ ra. Tuy nhiên khác với thủ tục nội tại, trigger hồn

tồn khơng có tham số.

Ngồi ra chúng ta không thể gọi thực hiện trực tiếp trigger bằng lệnh

EXECUTE như thủ tục nội tại hoặc bằng bất kỳ một lệnh nào khác thay vào đó trigg r

s được thực hiện một cách tự động khi dữ liệu của bảng có liên quan đến trigger bị

cập nhật..

1.5.2. Trigger trên các HQT CSDL

Để tạo một Trigg r ạn sử ụng câu lệnh CREATE TRIGGER:

CREATE TRIGGER trigger_name trigger_time trigger_event

ON table_name

FOR EACH ROW

BEGIN

...

END;

Trong đó

 Một Trigg r được khởi tạo sau câu lệnh CREATE TRIGGER. Quy tắc đặt

tên nên tuân th o nguyên tắc [trigger time]_[table name]_[trigger event], ví

ụ before_employees_update.

 Thời gian k ch hoạt BEFORE hoặc AFTER. Cần phải chỉ định thời gian

k ch hoạc khi ạn xác định được tiến trình k ch hoạt của nó. Sử ụng từ

khóa BEFORE nếu ạn muốn xử l hành động trước khi thực hiện thay đổi

trên ản và AFTER nếu ạn cần phải xử l hành động sau khi thay đổi được

thực hiện xong.

 Sự kiện gây ra có thể là INSERT, UPDATE, DELETE.

 Trình k ch hoạt phải được liên kết với một ảng cụ thể sử ụng từ

khóa ON để xác định.

 Câu lệnh SQ phải được đặt giữa từ khóa BEGIN và END.



1.5.3. Trigger trong PostgreSQL

Để tạo một Trigg r ạn sử ụng câu lệnh CREATE TRIGGER:

CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF }

{ event [ OR ... ] }

ON table

[ FROM referenced_table_name ]

[ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE |

INITIALLY DEFERRED } ]

[ FOR [ EACH ] { ROW | STATEMENT } ]

[ WHEN ( condition ) ]

EXECUTE PROCEDURE function_name ( arguments )

where event can be one of:

INSERT

UPDATE [ OF column_name [, ... ]

] DELETE

TRUNCATE



Hình 1.1. Trigger trong PostgreSQL

Trigger s được liên kết với bảng hoặc khung được chỉ định và s thực hiện

chức năng function_nam được chỉ định khi xảy ra các sự kiện nhất định.

Trigger có thể được chỉ định để kích hoạt trước khi thao tác được thực hiện trên

một hàng trước khi kiểm tra các ràng buộc và INSERT, UPDATE, hoặc E ETE

được cố gắng); hoặc sau khi hoạt động đã hoàn thành sau khi các ràng uộc được

kiểm tra và INSERT, UPDATE, hoặc E ETE đã hồn thành ; hoặc thay vì hoạt

động (trong trường hợp chèn, cập nhật hoặc xóa trên một lần xem).

Nếu Trigger kích hoạt trước hoặc thay vì sự kiện, Trigger có thể bỏ qua hoạt

động cho hàng hiện tại hoặc thay đổi hàng đang được chèn (chỉ dành cho thao tác

INSERT và UPDATE). Nếu Trigger kích hoạt sau sự kiện, tất cả các thay đổi, bao

gồm các hiệu ứng của các trình kích hoạt khác, là "hiển thị" với Trigger.

Một trigg r được đánh ấu FOR EACH ROW được gọi là một lần cho mỗi

hàng mà thao tác sửa đổi. Ví dụ, một DELETE ảnh hưởng đến 10 hàng s gây ra bất



kỳ ON DELETE kích hoạt trên quan hệ đ ch được gọi là 10 lần riêng biệt, một lần cho

mỗi hàng đã xóa. Ngược lại, một trigg r được đánh ấu FOR EACH STATEMENT

chỉ được thực hiện một lần cho bất kỳ hoạt động nào, bất kể có bao nhiêu hàng nó sửa

đổi đặc biệt, một thao tác sửa đổi các hàng không s vẫn dẫn đến việc thực hiện bất

kỳ áp lực nào đối với mỗi BỘ TRƯỞNG BẢO TỒN) .

Trigger hoạt được chỉ định để kích hoạt INSTEAD OF sự kiện kích hoạt phải

được đánh ấu FOR EACH ROW và chỉ có thể được định nghĩa trên chế độ xem.

TRƯỚC và sau khi Trigger trên chế độ xem phải được đánh ấu là FOR EACH

STATEMENT.

1.5.4. Hàm Trigger trong C

Trigg r c n được ng tự động lưu nhật k các thao tác ữ liệu xảy ra. V ụ

khi giao ịch ngân hàng một phát sinh giao ịch xảy ra có thể lưu nhật k TỰ

ĐỘNG

ằng trigg r thực hiện một cách đơn giản.

Bảng 1.1. Inserted, deleted

INSERT



DELETE



UPDATE



ữ liệu thêm mới được

lưu vào ảng này

Không sử ụng



ữ liệu mới s thay đổi



Không sử ụng

ữ liệu s xóa được

lưu vào ảng này

ữ liệu cũ trước khi

thay đổi



Khi trigg r xảy ra SQ S rv r sử ụng 2 ảng này để phục vụ cho công việc

mà trigg r đảm trách chức năng của từng ảng như sau

Ngoài cách viết trigg r ằng các sql stat m nt truyền thống HQT Postgr SQ

c n cho phép ta xây ựng các hàm được viết ằng ngôn ngữ C để thực hiện xử l các

hoạt động ins rt up at



l t với một tốc độ nhanh hơn.



Cú pháp

CREATE TRIGGER Trigger_name

ON table_name



FOR [DELETE, INSERT, UPDATE]

AS

Sql_statements

Giải th ch

Trigg r có tên Trigg r_nam được tạo ra trên ảng ta l _nam và trigg r được

gọi chạy khi có thao tác E ETE INSERT UP ATE trên ảng đó

1.5.5. Ví dụ tạo Trigger trên C trong PostgreSQL

Ví dụ 1:

CREATE TRIGGER CheckDiscountUpd

ON Products

FOR UPDATE AS

IF (SELECT discount FROM inserted) > (select max(Maxdisc) from discounts)

BEGIN

PRINT ‘You cannot assign a iscount gr at r than max allow



iscount’



ROLLBACK TRANSACTION

END

Giải th ch v dụ:

Giả sử ràng ảng Pro ucts có trường iscount khi cập nhật giá trị iscount thì

hệ thống kiểm tra x m giá trị iscount có nằm trong phạm vi cho phép hay không?

Nếu vượt quá thì hủy việc thay đổi đó.

V dụ 2: ạn khơng được phép thay đổi giá trị của trường paym nts trong ảng sal s

CREATE TRIGGER NoUpdatePayterms

ON sales

FOR UPDATE AS

IF UPDATE (payterms)

BEGIN

PRINT ‘You cannot mo ify th paym nt t rms for an or r’

ROLLBACK TRANSACTION

END



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Bố cục của đề tài

Tải bản đầy đủ ngay(0 tr)

×