Cấp bậc tác giả:

DATABASE

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

Được viết bởi QuangIT ngày 13/08/2012 lúc 07:29 PM
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
  • 0
  • 1767

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

Nguồn bài viết: hmweb

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML