12/9/11

Hướng dẫn xây dựng website: Xây dựng cơ sở dữ liệu - TRIGGER

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
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
Bookmark and Share

0 comments:

Post a Comment

Next previous home

Cộng đồng yêu thiết kế Việt Nam Thiet ke website, danang