Viết
các TRIGGER: Tiếp theo mình sẽ giới thiệu các TRIGGER để sinh và cập
nhật tự động cho bảng TB_Category (Độ sâu vầ phân cấp của chuyên mục) và
bảng TB_News
Để hiểu bài này bạn nên đọc bài Xây dựng cơ sở dữ liệu phần 1 trước
1. Trigger For TB_Category
Với bảng TB_Category để thể hiện các chuyên mục của website và cũng
để thể hiện menu đa cấp nên chúng ta cần viết các Trigger để tự động cập
nhật độ sâu và phân cấp cho menu. Như vậy mính sẽ phải viết 2 Trigger
For Update và For Insert
-- Create by webmaster@hmweb.com.vn
CREATE TRIGGER [dbo].[TB_Category_InsertTrigger]
ON [dbo].[TB_Category]
FOR INSERT AS
-- Tính và cập nhật lại Độ sâu và phân cấp của chuyên mục (For Inserted)
-- Tính và cập nhật lại Độ sâu và phân cấp của chuyên mục (For Inserted)
UPDATE child
SET Decen = ISNULL(parent.Decen + 1,0),
Depth = ISNULL(parent.Depth,'/') + LTrim(Str(child.CateID)) + '/'
FROM TB_Category child INNER JOIN inserted i ON i.CateID=child.CateID
LEFT OUTER JOIN TB_Category parent ON child.ParentID=parent.CateID
b. Trigger For Update-- Create by webmaster@hmweb.com.vn
CREATE TRIGGER [dbo].[TB_Category_UpdateTrigger]
ON [dbo].[TB_Category]
FOR UPDATE AS
IF UPDATE (ParentID)
-- Thực hiện cập nhật độ sâu và Phân cấp của thư mục
UPDATE child
SET Decen = child.Decen - old.Decen + ISNULL(parent.Decen + 1,0),
Depth = ISNULL(parent.Depth,'/') + LTrim(Str(old.CateID)) + '/' +
right(child.Depth, len(child.Depth) - len(old.Depth))
FROM TB_Category child
INNER JOIN inserted old ON child.Depth LIKE old.Depth + '%'
LEFT OUTER JOIN TB_Category parent ON old.ParentID=parent.CateID
Bài tiếp theo Viết store procedure phần 1




0 comments:
Post a Comment