我可以在SQL Server 2008中编写DDL触发器以根据列名自动创建密钥吗?

时间:2011-02-13 19:05:52

标签: sql-server-2008 triggers ddl

我从未编写过DDL触发器,但我的理解是它们在架构发生变化时运行SQL。我希望简化重复性任务。我不确定它们是否真的只是为审计目的而设计的。

  • 对于第一个序号位置的int字段[id]:
    • 将其设为主键
    • 设置标识种子/增量为1
  • 对于第二个序号位置的varchar字段[name]:
    • 使其成为一个独特的密钥

基本上,问题是:SQL Server 2008中的DDL触发器是否与我想要做的完全匹配? (并且,如果您已经执行此操作并在那里拥有sql代码,请将其粘贴到其中吗?)

1 个答案:

答案 0 :(得分:1)

没有DDL触发器不适合您想要做的事情。

DDL触发器在表已创建后运行

列不能追溯添加identity属性,这意味着您的触发器需要使用动态SQL立即删除新创建的表并重新创建它。

即使假设这只是个人项目,所以你没有其他开发人员担心会出现意外,并且不会因效率低下而烦恼,无论你尝试生成create脚本都很难做到并从头开始或解析CommandText作为起点。

如果这是您的常见模式,那么您可能需要调查在SSMS的模板资源管理器中创建自定义CREATE TABLE模板。