【问题标题】:Instead Insert Trigger而是插入触发器
【发布时间】:2009-05-29 22:19:11
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: sql sql-server triggers


    【解决方案1】:

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

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

      [Purchase Order Id] int 身份主键,

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

      SET IDENTITY INSERT NewTable ON

    3. 复制数据:

      插入新表(列)SELECT * FROM CurrentTable

    4. 关闭身份插入:

      SET IDENTITY INSERT NewTable 关闭

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

      EXEC sp_rename 'CurrentTable', 'BackupTable';

    6. 将新表移入:

      EXEC sp_rename 'NewTable', 'CurrentTable';

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

    【讨论】:

    • 或者,您可以在 SSMS 中使用 GUI...这将发出非常相似的 SQL...
    【解决方案2】:

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

    也就是说,如果您希望采用“替代插入触发器”路线,那么下面的 Microsoft 参考提供了一个详细示例。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-21
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      相关资源
      最近更新 更多