MSSQL 触发器

---触发器练习

--在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序
 CREATE TABLE Student 
 ( 
    SID INT PRIMARY KEY       --学号 
 ) 

 CREATE TABLE BorrowRecord
    (
      --学生借书记录表 
      BorrowRecord INT IDENTITY(1, 1) ,       --流水号   
      StudentID INT ,                    --学号 
      BorrowDate DATETIME ,                --借出时间 
      ReturnDAte DATETIME,                --归还时间 
       
      
    )
--EXEC sp_rename 'student.sid', 'studentid', 'COLUMN'
INSERT BorrowRecord VALUES(1,GETDATE(),GETDATE())
INSERT BorrowRecord VALUES(1,GETDATE(),GETDATE())

INSERT BorrowRecord VALUES(2,GETDATE(),GETDATE())

INSERT BorrowRecord VALUES(3,GETDATE(),GETDATE())

------------Insert----------------------------
if (object_id('tr_insert', 'TR') is not null)    
drop trigger tr_insert
go
CREATE TRIGGER tr_insert
ON BorrowRecord
FOR insert
as
DECLARE @studentid INT;
SELECT @studentid=studentid FROM INSERTED
INSERT INTO student VALUES(@studentid) ;
go
INSERT BorrowRecord VALUES(11,GETDATE(),GETDATE())
----------------Update---------------------------
if (object_id('truStudent', 'TR') is not null)    
drop trigger truStudent
go
create TRIGGER truStudent 
    ON student --在Student表中创建触发器 
    FOR UPDATE --为什么事件触发
AS
    IF UPDATE(studentid) 
        BEGIN
            UPDATE  BorrowRecord
            SET     StudentID = i.studentid
            FROM    BorrowRecord br ,
                    DELETED d ,
                    INSERTED i
            WHERE   br.StudentID = d.studentid

        END
--实例
UPDATE student SET studentid=2 WHERE studentid=7
SELECT * FROM BorrowRecord
SELECT * FROM student
----------------delete---------------------------
if (object_id('deletri', 'TR') is not null)    
drop trigger deletri
go
CREATE TRIGGER deletri
ON student
FOR DELETE
AS 
DELETE BorrowRecord FROM BorrowRecord br,DELETED d
WHERE br.StudentID=d.studentid
--实例
DELETE FROM student WHERE studentid=7
SELECT * FROM BorrowRecord
原文地址:https://www.cnblogs.com/wangyuelang0526/p/2582613.html