Sql server 理解数据库触发器
我不熟悉触发器和游标,希望了解特定触发器的作用。这是扳机Sql server 理解数据库触发器,sql-server,triggers,database-cursor,Sql Server,Triggers,Database Cursor,我不熟悉触发器和游标,希望了解特定触发器的作用。这是扳机 CREATE TRIGGER [dbo].[trg_XOnUpdate] ON TableX AFTER UPDATE AS BEGIN SET NOCOUNT ON DECLARE @XID INT, @XKey NVARCHAR(33) DECLARE updated_cursor CURSOR FOR SELECT XID, XKey FROM INSERTE
CREATE TRIGGER [dbo].[trg_XOnUpdate]
ON TableX
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE @XID INT, @XKey NVARCHAR(33)
DECLARE updated_cursor CURSOR FOR
SELECT XID, XKey
FROM INSERTED
WHERE XStatus
IN ('AA', 'BB', 'CC')
OPEN updated_cursor
FETCH NEXT FROM updated_cursor INTO @XID, @XKey
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE usp_UpdateXData @XID, @XKey
FETCH NEXT FROM updated_cursor INTO @XID, @XKey
END
CLOSE updated_cursor
DEALLOCATE updated_cursor
END
了解触发器的基本原理
触发器是在数据库发生某种事件时执行的操作。它可以是数据或对象更改。下面列出了不同类型的老虎机: 触发器类型
- DML(数据操作语言)触发器(SQLServer2000-80.0)
- DDL(数据定义语言)触发器(SQLServer2005-90.0)
- SQLCLR触发器(SQLServer2005-90.0)
- 无法使用触发器创建或修改数据库对象
- 无法执行任何管理任务
- 无法传递任何类型的参数
- 无法直接调用触发器
触发器对于审核数据更改或审核数据库以及管理业务规则非常有用。以下是一些例子:
- 触发器可用于强制引用完整性(例如,您可能无法应用外键)
- 在执行任何插入、更新或删除操作时,可以访问数据库中的新值和旧值
您不明白哪一行?@TabAlleman我知道光标正在枚举select返回的数据,其中状态为('AA','BB','CC')。我不理解下一部分的内容。。。它是说为状态为('AA','BB','CC')的ID和键执行存储过程吗?下一步获取是一个游标操作。谷歌“SQL游标示例”以获得完整的解释。理想情况下,您可以完全删除此游标,并创建一个基于集合的操作,而不是为更新的每一行调用存储过程。