而是插入触发器

时间:2009-05-29 22:19:11

标签: sql sql-server triggers

有人可以给我一个代替MSSQL插入触发器的骨架体。我正在尝试测试采购订单列中的最大值(这是一个整数),并且在插入时,它会抓取一个最大值增量并将其作为采购订单ID插入。该列未设置自动增量选项,因此我使用触发器来解决这个问题。

感谢。

2 个答案:

答案 0 :(得分:6)

以下是更改表格以包含标识列的方法。

  1. 创建一个具有相同结构的新表,但在Purchase Order ID上有一个标识列。您可以使用“脚本表作为”,只需更改采购订单ID的行,如:

    [Purchase Order Id] int identity primary key

  2. 在新表上启用标识插入:

    SET IDENTITY INSERT NewTable ON

  3. 复制数据:

    INSERT INTO NewTable(Columns)SELECT * FROM CurrentTable

  4. 关闭身份插入:

    SET IDENTITY INSERT NewTable OFF

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

    EXEC sp_rename'CurrentTable','BackupTable';

  6. 将新表格移至:

    EXEC sp_rename'NewTable','CurrentTable';

  7. 现在你有一个很好的标识列,这比讨厌的触发器要好得多。

答案 1 :(得分:0)

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

那就是说,如果您希望关闭而不是插入触发器路由,那么以下Microsoft参考提供了一个详细的示例。

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