首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Instead插入触发器

Instead插入触发器
EN

Stack Overflow用户
提问于 2009-05-29 14:19:11
回答 2查看 683关注 0票数 1

谁能给我一个MSSQL的Instead of Insert触发器的骨架主体。我正在尝试测试采购订单列中的最大值(它是一个整数),在插入时,它获取最大值的增量,并将其作为采购订单ID插入。该列没有设置自动递增选项,所以我使用触发器绕过了它。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-05-29 15:06:21

下面是如何更改您的表以包含标识列的方法。

  1. 创建一个具有相同结构的新表,但在采购订单ID上有一个identity列。您可以使用“将表编写为”,只需更改采购订单Id的行,如下所示:

采购订单Id int标识主键,

  • 在新表上打开标识插入:

SET IDENTITY INSERT NewTable ON

  • Copy over the data:

INSERT (Columns) SELECT * FROM CurrentTable

  • Turn identity insert off: insert insert NewTable (Columns)SELECT*FROM identity insert off:

SET IDENTITY INSERT NewTable OFF

  • 重命名(或删除)旧表,使其不再使用:

EXEC 'BackupTable';

  • Move 'CurrentTable',在以下位置对新表执行‘BackupTable’;

  • Move操作:

EXEC sp_rename 'NewTable','CurrentTable';

现在您有了一个很好的identity列,这比讨厌的触发器要好得多。

票数 6
EN

Stack Overflow用户

发布于 2009-05-30 05:10:49

正如Andomar所描述的,在我看来,创建一个新的表来适当地支持您的特定需求将是理想的行动方案。

也就是说,如果您希望使用Instead of Insert触发器路线,那么下面的Microsoft参考提供了一个详细的示例。

http://msdn.microsoft.com/en-us/library/ms175089.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/928394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文