Các Loại Bản Sao Lưu Cơ Sở Dữ Liệu


declare @slx as float

set @mamh=(select mamh from deleted)

if (select count(*) from nhap where mamh=@mamh)>0 begin


end else begin


end END

set @slx=(select slx from deleted) update tonkho

set slt=slt+@slx

Có thể bạn quan tâm!

Xem toàn bộ 323 trang tài liệu này.

where mamh=@mamh


rollback tran

raiserror('Không tồn tại mặt hàng này',16,2)

Trường hợp 1: Không tồn tại mặt hàng này.

Trường hợp 2 Thực hiện việc xóa và cập nhật dữ liệu thành công c Khi 1

Trường hợp 2: Thực hiện việc xóa và cập nhật dữ liệu thành công.

c Khi cập nhật bản ghi Sau khi bản ghi được sửa đổi ta phải tính toán để 2

c) Khi cập nhật bản ghi:

Sau khi bản ghi được sửa đổi, ta phải tính toán để cập nhật lại giá trị các cột của các bảng có liên quan khớp với giá trị mới vừa được sửa đổi. Việc cập nhập này có thể là tăng hoặc giảm so với giá trị cũ trước đó hoàn toàn tùy thuộc vào giá trị chênh lệch giữa giá trị mới được sửa đổi và giá trị cũ trước đó.


Vì vậy, nguyên tắc chung trong các trigger sửa đổi dữ liệu là cập nhật lại giá trị chênh lệch sau khi và trước khi sửa đổi dữ liệu, tùy thuộc vào số chênh lệch này là âm hoặc dương mà giá trị được cập nhật sẽ giảm hoặc tăng so với giá trị hiện hành.

Ví dụ 1: Tạo Trigger cho bảng nhập hàng khi cập nhật một bản ghi. Ta cần kiểm tra các ràng buộc toàn vẹn dữ liệu:

- Không cho phép cập nhật mã mặt hàng, tên mặt hàng.

- Kiểm tra số lượng nhập phải lớn hơn hoặc bằng số lượng xuất.

- Kiểm tra đơn giá nhập phải nhỏ hơn đơn giá xuất.

Nếu tất cả các ràng buộc toàn vẹn dữ liệu ở trên đều hợp lệ thì thay đổi giá trị của trường số lượng tồn kho trong bảng tồn kho.

CREATE TRIGGER Trigger_Update_Nhap ON Nhap

AFTER Update AS

BEGIN

declare @mamh as nvarchar(50) declare @slx as float

declare @sln as float declare @dgx as float declare @dgn as float

if (COLUMNS_UPDATED() & 3) > 0

begin


end else begin

rollback tran

raiserror('Không cho phép cập nhật mã mặt hàng, tên mặt hàng',16,2)

set @mamh=(select mamh from inserted)

if (select count(*) from nhap where mamh=@mamh)>0 begin

set @sln=(select sln from inserted) set @dgn=(select dgn from inserted)

set @slx=(select slx from xuat where mamh=@mamh) set @dgx=(select dgx from xuat where mamh=@mamh) if @slx>@sln or @dgn>@dgx

begin



else


end begin

rollback tran

raiserror('Số lượng nhập, đơn giá nhập không hợp lệ',16,2)


end else begin


end end END

update tonkho

set slt=@sln-@slx where mamh=@mamh end


rollback tran

raiserror('Không tồn tại mặt hàng này',16,2)


Trường hợp 1: Số lượng nhập, đơn giá nhập không hợp lệ

Trường hợp 2 Thực hiện việc cập nhật thành công Trường hợp 3 Không tồn 3

Trường hợp 2: Thực hiện việc cập nhật thành công.

Trường hợp 3 Không tồn tại mặt hàng này Trường hợp 4 Không cho phép cập 4

Trường hợp 3: Không tồn tại mặt hàng này.


Trường hợp 4 Không cho phép cập nhật tên mặt hàng Ví dụ 2 Xây dựng trigger 5

Trường hợp 4: Không cho phép cập nhật tên mặt hàng.

Ví dụ 2 Xây dựng trigger trong bảng phòng ban để kiểm tra các ràng buộc toàn 6

Ví dụ 2: Xây dựng trigger trong bảng phòng ban để kiểm tra các ràng buộc toàn vẹn dữ liệu khi người dùng cập nhật một bản ghi. Cần phải kiểm tra các ràng buộc toàn vẹn dữ liệu như sau:

Khi cập nhật mã phòng trong bảng phòng ban thì mã phòng trong bảng lương cũng được cập nhật theo.

CREATE TRIGGER TriggerUpdate_Phong ON Phong

AFTER UPDATE AS

BEGIN

declare @mapmoi as nvarchar(10) declare @mapcu as nvarchar(10)

select @mapmoi=(select maphong from inserted) select @mapcu=(select maphong from deleted)

if (select count(*) from deleted)>0 begin

update luong

set maphong=@mapmoi where maphong=@mapcu

raiserror('Mã phòng trong bảng lương đã được cập nhật',16,1)



end else begin


end END

raiserror('Mã phòng trong bảng phòng đã được cập nhật',16,1)


raiserror('Không có phòng này',16,1)


Trường hợp 1: Có phòng trong bảng phòng để cập nhật.

Trường hợp 2 Không có phòng trong bảng phòng để cập nhật Tóm lại việc 7

Trường hợp 2: Không có phòng trong bảng phòng để cập nhật.


Tóm lại việc phân chia tổ chức các kiểm tra ràng buộc toàn vẹn dữ liệu 8

Tóm lại, việc phân chia, tổ chức các kiểm tra ràng buộc toàn vẹn dữ liệu phức tạp hoặc các cập nhật dữ liệu tự động trong đối tượng trigger sẽ làm cho các xử lý được tập trung tại máy chủ và độc lập với ngôn ngữ lập trình tại máy trạm. Điều này làm cho tốc độ của các ứng dụng theo mô hình khách chủ được nhanh hơn.

5.4. Thao tác với Trigger

1) Tạo Trigger

- Dùng công cụ MS

Bước 1: Chọn tên cơ sở dữ liệu/Chọn Tables/Chọn tên bảng/Chọn Triggers/Chọn chuột phải/Chọn New Trigger.


Hình 5 6 Tạo Trigger Bước 2 Viết đoạn mã lệnh để tạo Trigger Bước 3 9

Hình 5.6. Tạo Trigger

Bước 2: Viết đoạn mã lệnh để tạo Trigger.

Bước 3: Chọn nút để kiểm tra câu lệnh T-SQL. Bước 4: Chọn nút để thực hiện câu lệnh Trigger.

- Dùng câu lệnh T-SQL

Bước 1: Chọn nút New Query , xuất hiện cửa sổ New Query Bước 2: Viết đoạn mã lệnh để tạo Trigger.

Bước 3: Chọn nút để kiểm tra câu lệnh T-SQL.

Bước 4: Chọn nút để thực hiện câu lệnh tạo Trigger.

Hình 5 7 Kết quả tạo Trigger 2 Thay đổi trigger Cách 1 Chọn tên trigger Chọn 15

Hình 5.7. Kết quả tạo Trigger


2) Thay đổi trigger

Cách 1: Chọn tên trigger/Chọn chuột phải/Chọn Modify. Cách 2: Dùng câu lệnh Alter Trigger.

3) Xóa trigger

Cách 1: Chọn tên trigger/Chọn chuột phải/Chọn Delete/Chọn OK. Cách 2: Dùng câu lệnh Drop Trigger.

4) Làm trigger mất hiệu lực

Cách 1: Chọn tên trigger/Chọn chuột phải/Chọn Disable. Cách 2: Dùng câu lệnh.

5) Làm trigger có hiệu lực

Cách 1: Chọn tên trigger/Chọn chuột phải/Chọn Enable. Cách 2: Dùng câu lệnh.


Chương 6

SAO LƯU VÀ PHỤC HỒI DỮ LIỆU


6.1. Khái niệm sao lưu cơ sở dữ liệu

Sao lưu dữ liệu là việc tạo ra các bản sao của dữ liệu gốc, cất giữ ở một nơi an toàn. Cơ sơ dữ liệu luôn là kho thông tin vô cùng quan trọng đối với bất kỳ một doanh nghiệp hay tổ chức sử dụng chúng. Chúng có thể bị hỏng hóc một phần hay toàn bộ bất kỳ lúc nào cho dù cơ sở hạ tầng về công nghệ thông tin nói chung và máy chủ chứa cơ sở dữ liệu nói riêng có tốt đến đâu thì việc sự cố bất thường xảy ra là điều khó tránh khỏi. Dữ liệu có thể bị mất hoặc bị xâm nhập trái phép bới các nguyên nhân như thiết bị lưu trữ bị hỏng, do người dùng vô tình xóa hay do kẻ xấu cố ý phá hoại cơ sở dữ liệu. Vì vậy người quản trị cơ sở dữ liệu cần phải có kế hoạch sao lưu để tránh và giảm thiểu rủi ro cho cơ sở dữ liệu.

SQL Server 2008 cung cấp chức năng sao lưu và phục hồi dữ liệu rất hoàn hảo, chúng ta có thể thao tác trực tiếp hay theo lịch trình định sẵn.

6.1.1.Các loại bản sao lưu cơ sở dữ liệu

1) Full backup:

Full backup là một bản sao lưu đầy đủ của cơ sở dữ liệu tr ên các phương tiện lưu trữ. Quá trình full backup có thể tiến hành mà không cần ẩn cơ sở dữ liệu, nhưng quá trình này lại chiếm một lượng lớn tài nguyên hệ thống và có thể ảnh hưởng nghiêm trọng tới thời gian đáp ứng các y êu cầu của hệ thống.

2) Diferential backup:

Differential backup được xây dựng nhằm làm giảm thời gian cần thiết để thực hiện quá trình full backup. Differential backup ch ỉ sao lưu những thay đổi tr ên dữ liệu kể từ lần full backup gần nhất. Trong những hệ thống CSDL lớn, quá trình differential backup sẽ sử dụng tài nguyên ít hơn rất nhiều so với quá trình full backup và có th ể không ảnh hưởng đến hiệu suất của hệ thống.

Quá trình differential chỉ sao lưu những sự thay đổi của dữ liệu từ lần full backup gần nhất, do đó khi có sự cố với cơ sở dữ liệu nếu không có bản sao lưu của quá trình full backup thì b ản sao lưu của quá trình differential backup s ẽ trở nên vô nghĩa.

Ví dụ trong chương trình Quản lý tuyển sinh của một trường Đại học, ta thực hiện full backup v ào cuối ngày thứ 6 hàng tuần và thực hiện differential backup vào t ối các ngày từ thứ 2 tới thứ 5. Nếu cơ sở dữ liệu có sự cố v ào sáng thứ 4, quản trị viên cơ sở dữ liệu sẽ phục hồi dữ liệu bằng bản sao lưu của quá trình full backup c ủa ngày thứ 6 tuần trước và sau đó phục hồi các thay đổi của dữ liệu bằng

Xem tất cả 323 trang.

Ngày đăng: 16/07/2022
Trang chủ Tài liệu miễn phí