适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例

本主题介绍了有助于创建 DDL 触发器,修改 DDL 触发器以及禁用或删除 DDL 触发器的信息。

创建 DDL 触发器

DDL 触发器是使用 DDL 触发器的 Transact-SQL CREATE TRIGGER 语句创建的。

创建 DDL 触发器

  • CREATE TRIGGER (Transact-SQL)
  • SQL Server的未来版本中将删除从触发器返回结果集的功能。 返回结果集的触发器可能会导致应用程序出现意外的行为,而这些行为并不符合它们的设计意图。 避免在新的开发工作中从触发器返回结果集,并计划修改当前执行此操作的应用程序。 若要防止触发器在 SQL Server中返回结果集,请将 disallow results from triggers 选项 设置为 1。 在后续版本的 SQL Server中,此选项的默认设置为 1。

    修改 DDL 触发器

    如果必须修改 DDL 触发器的定义,只需一个操作即可删除并重新创建触发器,或重新定义现有触发器。

    如果更改了由 DDL 触发器引用的对象的名称,则必须修改触发器,以使其文本反映新的名称。 因此,在重命名对象之前,需要先显示该对象的依赖关系,以确定所建议的更改是否会影响任何触发器。

    也可将修改触发器,对其定义进行加密。

    修改触发器

  • ALTER TRIGGER (Transact-SQL)
  • 查看触发器的依赖关系

  • sys.sql_expression_dependencies (Transact-SQL)

  • sys.dm_sql_referenced_entities (Transact-SQL)

  • sys.dm_sql_referencing_entities (Transact-SQL)

    禁用和删除 DDL 触发器

    当不再需要某个 DDL 触发器时,可以禁用或删除该触发器。

    禁用 DDL 触发器不会将其删除。 该触发器仍然作为对象存在于当前数据库中。 但是,当运行其编程的任何 Transact-SQL 语句时,触发器不会触发。 可以重新启用禁用的 DDL 触发器。 在启用 DDL 触发器后,该触发器的激发方式与其最初创建时的激发方式相同。 创建的 DDL 触发器默认处于启用状态。

    删除 DDL 触发器时,该触发器将从当前数据库中删除。 DDL 触发器范围内的任何对象或数据均不受影响。

    禁用 DDL 触发器

  • DISABLE TRIGGER (Transact-SQL)

  • ALTER TABLE (Transact-SQL)

    启用 DDL 触发器

  • ENABLE TRIGGER (Transact-SQL)

  • ALTER TABLE (Transact-SQL)

    删除 DDL 触发器

  • DROP TRIGGER (Transact-SQL)
  •