数码资讯
SQLServer的误解在第四天,30天是DDL触发器INSTEADOF触发器
误区4:# DDL触发器(SQL Server 2005推出后)是一种替代触发器 错了。 对DDL触发器实现的原理实际上是一个触发后。这意味着DDL操作首先发生,然后将触发捕获运行(当然,如果你写回滚的触发,也可以回滚)。 回滚的存在也意味着触发器不像您想象的那么轻,并看下面的例子: 修改表mybi
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
误区4:# DDL触发器(SQL Server 2005推出后)是一种替代触发器
错了。
对DDL触发器实现的原理实际上是一个触发后。这意味着DDL操作首先发生,然后将触发捕获运行(当然,如果你写回滚的触发,也可以回滚)。
回滚的存在也意味着触发器不像您想象的那么轻,并看下面的例子:
修改表mybigtable添加mynewnonnullcolumn varchar(20)default'paul
If there is a DDL trigger for a defined for ALTER_TABLE event, or a more broad event, such as DDL_TABLE_EVENTS.The above DDL code will add a new column to each row of the table in the table, then trigger the trigger operation.If there is a rollback in your trigger to prevent the DDL operation from happening, the cost is not small.
当然,更好的办法是建立授予或拒绝权限的改变,或只允许DDL操作是通过存储过程创建完成。
但在任何情况下,虽然可以实现禁止DDL触发器DDL操作的目的,这是昂贵的。利用DDL触发器是让一些人做一些修改表等操作。所以我不是说DDL触发器是不允许的,但我们应该小心使用它。
金佰利有一个非常好的博客:DDL触发器执行的重要更新你的DDL触发器。
错了。
对DDL触发器实现的原理实际上是一个触发后。这意味着DDL操作首先发生,然后将触发捕获运行(当然,如果你写回滚的触发,也可以回滚)。
回滚的存在也意味着触发器不像您想象的那么轻,并看下面的例子:
修改表mybigtable添加mynewnonnullcolumn varchar(20)default'paul
If there is a DDL trigger for a defined for ALTER_TABLE event, or a more broad event, such as DDL_TABLE_EVENTS.The above DDL code will add a new column to each row of the table in the table, then trigger the trigger operation.If there is a rollback in your trigger to prevent the DDL operation from happening, the cost is not small.
当然,更好的办法是建立授予或拒绝权限的改变,或只允许DDL操作是通过存储过程创建完成。
但在任何情况下,虽然可以实现禁止DDL触发器DDL操作的目的,这是昂贵的。利用DDL触发器是让一些人做一些修改表等操作。所以我不是说DDL触发器是不允许的,但我们应该小心使用它。
金佰利有一个非常好的博客:DDL触发器执行的重要更新你的DDL触发器。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。