Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 我可以在SQLServer2008中编写DDL触发器来根据列名自动创建键吗?_Sql Server 2008_Triggers_Ddl - Fatal编程技术网

Sql server 2008 我可以在SQLServer2008中编写DDL触发器来根据列名自动创建键吗?

Sql server 2008 我可以在SQLServer2008中编写DDL触发器来根据列名自动创建键吗?,sql-server-2008,triggers,ddl,Sql Server 2008,Triggers,Ddl,我从未编写过DDL触发器,但我的理解是,它们在模式更改时运行SQL。我希望简化重复性任务。我不确定它们是否真的只是为了审计目的而设计的 对于第一个序号位置的整型字段[id]: 让它成为主键 将标识种子/增量设置为1 对于第二顺序位置的varchar字段[name]: 让它成为唯一的钥匙 基本上,问题是:SQLServer2008中的DDL触发器是否与我想要做的事情很匹配?(而且,如果您已经这样做了,并且sql代码就在那里,您可以粘贴它吗?没有DDL触发器与您想要执行的操作不匹配 DD

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

  • 对于第一个序号位置的整型字段[id]:
    • 让它成为主键
    • 将标识种子/增量设置为1
  • 对于第二顺序位置的varchar字段[name]:
    • 让它成为唯一的钥匙

基本上,问题是:SQLServer2008中的DDL触发器是否与我想要做的事情很匹配?(而且,如果您已经这样做了,并且sql代码就在那里,您可以粘贴它吗?

没有DDL触发器与您想要执行的操作不匹配

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

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

即使假设这只是一个个人项目,您也不必担心其他开发人员会感到意外,也不必担心生成
create
脚本的效率低下,但无论您是从零开始还是从解析
CommandText
作为起点,都很难稳健地完成


如果这是一种常见的模式,那么您可能需要研究在SSMS的模板资源管理器中创建自定义的
创建表
模板。

当答案对我有帮助时,我会尝试接受;如果每个人都做得对的话,那会保持质量吗?不过我还是要看一看,因为我想公平一点。谢谢你的提示。动态sql是指生成tsql字符串还是向信息架构视图插入行?动态sql涉及生成tsql字符串,您不能通过修改这些视图来更改表结构。