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
a. Trigger 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)
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