触发器:
CREATE TRIGGER aaa on test for insert,delete,update
AS
RETURN
aaa: 触发器名
test: 表名

@@rowcount
返回受上一语句所影响的数据库的表或者视图中数据的行数。
返回值integer.

SELECT * FROM INSERTED 插入
SELECT * FROM DELETED 删除
如在触发器中:
插入数据:
IF EXISTS(SELECT * FROM INSERTED) AND NOT EXISTS(SELECT * FROM DELETED)
删除数据:
IF NOT EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED)
更新数据:
IF EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED)

语句:
INSERT INTO test_bak VALUES(SELECT id,ab FROM INSERTED)
DELETE FROM test_bak WHERE id IN (SELECT id FROM DELETED)


-----------------------------------------------------------------------------------------------------
DECLARE @del_count int
SELECT @del_count=Count(*) FROM DELETED
DECLARE @ins_Count int
SELECT @ins_Count=Count(*) FROM INSERTED

@ins_Count>0 AND del_Count=0 插入
@ins_Count=0 AND del_Count>0 删除
@ins_Count=del_Count AND ins_Count>0 更新
scope_identity() 函数 (插入数据后返回ID)
CREATE TRIGGER aaa on test for insert,delete,update
AS
RETURN
aaa: 触发器名
test: 表名
@@rowcount
返回受上一语句所影响的数据库的表或者视图中数据的行数。
返回值integer.
SELECT * FROM INSERTED 插入
SELECT * FROM DELETED 删除
如在触发器中:
插入数据:
IF EXISTS(SELECT * FROM INSERTED) AND NOT EXISTS(SELECT * FROM DELETED)
删除数据:
IF NOT EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED)
更新数据:
IF EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED)
语句:
INSERT INTO test_bak VALUES(SELECT id,ab FROM INSERTED)
DELETE FROM test_bak WHERE id IN (SELECT id FROM DELETED)

-----------------------------------------------------------------------------------------------------
DECLARE @del_count int
SELECT @del_count=Count(*) FROM DELETED
DECLARE @ins_Count int
SELECT @ins_Count=Count(*) FROM INSERTED
@ins_Count>0 AND del_Count=0 插入
@ins_Count=0 AND del_Count>0 删除
@ins_Count=del_Count AND ins_Count>0 更新scope_identity() 函数 (插入数据后返回ID)
SQL触发器详解
本文详细介绍了如何使用SQL触发器来响应插入、删除和更新操作。通过具体的代码示例,展示了如何判断不同类型的数据库操作,并提供了实用的技巧来处理这些操作后的数据同步。

被折叠的 条评论
为什么被折叠?



