CREATE TRIGGER KT_CAP_NHATON Production.ProductFOR UPDATEASBEGINDECLARE KT INT, ProMoIDThem INT, IDtam INTSELECT IDtam=ProductModelID FROM insertedIF(UPDATE(ProductModelID))BEGINSELECT KT=COUNT() FROM Production.ProductModel WHERE ProductModelID=IDtamIF(KT=0)BEGINPRINT MA KHONG TON TAIROLLBACK TRANENDELSEBEGINSELECT ProMoIDThem=COUNT() FROM Production.Product WHERE ProductModelID=IDtamUPDATE Production.ProductModel SET total_moid=ProMoIDThem WHERE ProductModelID=IDtamENDENDENDUPDATE Production.Product SET ProductModelID=1 WHERE ProductID=1UPDATE Production.Product SET ProductModelID=1 WHERE ProductID=2KIEM TRASELECT ProductID, ProductModelID FROM Production.ProductSELECT ProductModelID, total_moid FROM Production.ProductModel
Trang 1/*Viết trigger kiểm tra việc cập nhật ProductModelID cho bảng
Production.Product
nếu ProductModelID không tồn tại trong bảng Production.ProductModelID thì thông báo “mã không tồn tại” và thực hiện rollback Trường hợp mã tồn tại thì đếm
có bao nhiêu ProductModelID cùng loại trên bảng Production.Product rồi cập nhật
vào cột total_moid vừa mới thêm.*/
THEM total_moid CHO BANG PRODUCTION.PRODUCT
ALTER TABLE Production.ProductModel ADD total_moid INT
KIEM TRA THEM COT total_moid
SELECT * FROM Production.ProductModel
CREATE TRIGGER KT_CAP_NHAT
ON [Production].[Product]
FOR UPDATE
AS
BEGIN
DECLARE @KT INT, @ProMoIDThem INT, @IDtam INT
SELECT @IDtam=ProductModelID FROM inserted
IF(UPDATE(ProductModelID))
BEGIN
SELECT @KT=COUNT(*) FROM Production.ProductModel WHERE ProductModelID=@IDtam
IF(@KT=0) BEGIN
PRINT 'MA KHONG TON TAI' ROLLBACK TRAN
END ELSE BEGIN
SELECT @ProMoIDThem=COUNT(*) FROM Production.Product WHERE ProductModelID=@IDtam
UPDATE Production.ProductModel SET total_moid=@ProMoIDThem WHERE ProductModelID=@IDtam
END END
END
UPDATE [Production].[Product] SET ProductModelID='1' WHERE ProductID='1' UPDATE [Production].[Product] SET ProductModelID='1' WHERE ProductID='2' KIEM TRA
SELECT ProductID, ProductModelID FROM Production.Product
SELECT ProductModelID, total_moid FROM Production.ProductModel
Viết trigger đặt ten ghilog_trig để khi thao tác trên bảng
Production.Culture thông tin sẽ được ghi vào bảng trig_log
TAO BANG TRIG_LOG
CREATE TABLE TRIG_LOG
Trang 2ID INT IDENTITY(1,1) NOT NULL,
ID_THAO_TAC VARCHAR(6),
LOAI_THAO_TAC NVARCHAR(50),
THOI_GIAN SMALLDATETIME
)
TAO TRIGGER
CREATE TRIGGER GHILOG_TRIG
ON [Production].[Culture]
FOR UPDATE, INSERT, DELETE
AS
BEGIN
DECLARE @ID1 VARCHAR(6), @ID2 VARCHAR(6)
SELECT @ID1=CultureID FROM inserted
SELECT @ID2=CultureID FROM deleted
IF(@ID1 IS NOT NULL AND @ID2 IS NOT NULL)
BEGIN
INSERT INTO [dbo].[TRIG_LOG] VALUES(@ID1,'UPDATE',GETDATE()) END
ELSE IF(@ID1 IS NOT NULL)
BEGIN
INSERT INTO [dbo].[TRIG_LOG]
VALUES(@ID1,'INSERT',GETDATE())
END ELSE IF(@ID2 IS NOT NULL)
BEGIN
INSERT INTO [dbo].[TRIG_LOG]
VALUES(@ID2,'DELETE',GETDATE())
END END
THUC THI
UPDATE [Production].[Culture] SET Name='JKAD' WHERE CultureID='ACD' INSERT INTO [Production].[Culture] VALUES ('ACD','AB',GETDATE())
DELETE [Production].[Culture] WHERE CultureID='ABC'
KIEM TRA
SELECT * FROM Production.Culture