{ CREATE | ALTER } TRIGGERS SQL Server Trigger : สอน คำสั่ง ของ { CREATE | ALTER } TRIGGERS, เรียน คำสั่ง ของ { CREATE | ALTER } TRIGGERS
 
  • { CREATE | ALTER } TRIGGERS คำสั่งของการสร้างและแก้ไข Trigger
  • subject :
    { CREATE | ALTER } TRIGGERS

    syntax :
    { CREATE | ALTER } TRIGGERS triggers_name
    ON { table_name | view_name }
    [ WITH ENCRYPTION ]
    { FOR | AFTER | INSTEAD OF }
    	{ [ DELETE ] [,] [ INSERT ] [,] [ UPDATE ] }
    [ WITH APPEND ]
    [ NOT FOR REPLICATION ]
    AS
    	<sql_statement>
    	// [ IF UPDATE(column_name) ] ใช้ตรวจสอบว่ามีการเปลี่ยนแปลงที่ คอลัมน์ ที่กำหนด หรือไม่

    content :
    คำสั่ง ROLLBACK TRANSACTION สามารถใช้ใน Trigger ได้
    เพราะว่า การทำงานของ Trigger จะมีการใช้คำสั่ง Begin Transaction ก่อนการทำงาน
    และคำสั่ง Commit Transaction หลังการทำงานภายในตัว Trigger เองอยู่แล้ว

       
    example :
    -- ex 1
    CREATE TABLE tbl_orders
    (
    	id int IDENTITY NOT NULL,
    	price money NOT NULL
    )
    GO
    CREATE TRIGGERS trg_orders
    ON orders
    FOR INSERT, UPDATE
    AS
    	PRINT "Occurs Modify Data In Orders Table."
    GO
    
    -- ex 2
    CREATE TRIGGERS trg_InsUpdPerson
    ON Person
    FOR INSERT, UPDATE
    AS
    BEGIN
    	DECLARE @age int
    	SELECT @age = a.age
    	FROM inserted AS a
    
    	IF @age < 0
    		BEGIN
    			ROLLBACK TRANSACTION
    		END
    END
    
    -- ex 3
    CREATE TRIGGERS trg_UpdPerson
    > 100 ) > 0
    		BEGIN
    			ROLLBACK TRANSACTION
    		END
    END
    
    -- ex 5
    CREATE TRIGGERS trg_DelPerson
    ON Person
    FOR DELETE
    AS
    BEGIN
    	DELETE User
    	FROM deleted AS a
    	WHERE User.person_id = a.id
    	// เป็นการ CASCADING DELETE
    END
    
    -- ex 6
    CREATE VIEW vw_detailUser
    AS
    BEGIN
    	SELECT
    		a.id
    		, a.name
    		, b.firstname 
    		, b.lastname
    		, b.sex
    	FROM
    		user a 
    		LEFT OUTER JOIN person b ON a.person_id = b.id
    END
    GO
    
    CREATE TRIGGERS trg_InsViewDetailUser
    ON vw_detailUser
    INSTEAD OF INSERT
    AS
    BEGIN
    	IF ( SELECT COUNT(*) FROM inserted ) > 0
    	BEGIN
    		INSERT INTO person ( firstname, lastname, sex )
    		SELECT a.firstname, a.lastname, a.sex
    		FROM inserted a
    
    		INSERT INTO user ( name )
    		SELECT a.name
    		FROM inserted a
    	END
    END

       

0 Comment

  • Have no comment.

Comment Reference

 
 
 
Share This Topic Login with Facebook