Professional Documents
Culture Documents
bài tập về Trigger
bài tập về Trigger
Trigger
------------------------------TRANSACTION
---------------------------------------------
TRANSACTION trong SQL là tiến trình thực hiện một nhóm các câu lệnh SQL.
Các câu lệnh này được thực thi một cách tuần tự và độc lập.
Một Transaction được thực hiện thành công khi tất cả câu lệnh đều thành công,
khi đó tất cả các thay đổi dữ liệu được thực hiện trong Transaction được lưu vào cơ
sở dữ liệu.
Tuy nhiên, nếu chỉ một trong số đó thất bại thì toàn bộ tiến trình sẽ thất bại,
đồng nghĩa với việc dữ liệu phải rollback về trạng thái ban đầu
(dữ liệu được khôi phục về trạng thái trước khi thực hiện Transaction).
Trong SQL, có các lệnh sau được sử dụng để điều khiển Transaction:
COMMIT : để lưu các thay đổi.
ROLLBACK: để quay trở lại trạng thái trước khi có thay đổi.
-- khi thêm mới một dữ liệu thì trước tiên dữ liệu sẽ được đưa vào bảng
INSERTED
IF @CAU_THU_NUOC_NGOAI <= 8
BEGIN
DECLARE @error INT;
INSERT INTO CAUTHU VALUES
(@HOTEN,@VITRI,@NGAYSINH,@DIACHI,@MACLB,@MAQG,@SO);
SELECT @error = @@ERROR;
IF @error = 0
BEGIN
COMMIT TRANSACTION;
PRINT N'Đã thêm cầu thủ mới';
END
ELSE
BEGIN
PRINT N'Xảy ra lỗi khi thêm
cầu thủ mới';
ROLLBACK TRANSACTION;
END
END
ELSE
BEGIN
PRINT N'SỐ LƯỢNG CẦU THỦ NGOẠI QUỐC VƯỢT
QUÁ 8';
ROLLBACK TRANSACTION;
END
END
ELSE
BEGIN
PRINT N'ĐÃ TỒN TẠI SỐ ÁO: '+CAST(@SO AS
NVARCHAR(100));
ROLLBACK TRANSACTION;
END
END
ELSE
BEGIN
PRINT N'KHÔNG THUỘC VỊ TRÍ NÀO';
ROLLBACK TRANSACTION;
END
END;
INSERT INTO CAUTHU VALUES (N'Nguyễn Công Sơn',N'Tiền đạo','1990-02-
20',NULL,'BBD','VN',10);
/* 7. Không cho sửa kết quả của các trận đã diễn ra. */
--Bản chất của UPDATE một dữ liệu là DELETE đi dữ liệu cũ và INSERT một dữ liệu mới
-------------------------------COMMIT - ROLLBACK
-----------------------------------------------------
/* 9. Khi thêm mới một câu lạc bộ thì kiểm tra xem đã có câu lạc bộ trùng tên
với câu lạc bộ vừa được thêm hay không?
A. chỉ thông báo vẫn cho insert.
B. thông báo và không cho insert */