【发布时间】:2009-05-29 22:19:11
【问题描述】:
谁能给我 MSSQL 的替代插入触发器的骨架主体。我正在尝试测试采购订单列中的最大值(它是一个整数),并在插入时获取最大值增量,并将其作为采购订单 ID 插入。该列没有设置自动增量选项,所以我用触发器解决了这个问题。
谢谢。
【问题讨论】:
标签: sql sql-server triggers
谁能给我 MSSQL 的替代插入触发器的骨架主体。我正在尝试测试采购订单列中的最大值(它是一个整数),并在插入时获取最大值增量,并将其作为采购订单 ID 插入。该列没有设置自动增量选项,所以我用触发器解决了这个问题。
谢谢。
【问题讨论】:
标签: sql sql-server triggers
以下是更改表格以包含标识列的方法。
创建一个具有相同结构的新表,但在采购订单 ID 上有一个标识列。您可以使用“脚本表作为”,只需更改采购订单 ID 的行,例如:
[Purchase Order Id] int 身份主键,
在新表上开启标识插入:
SET IDENTITY INSERT NewTable ON
复制数据:
插入新表(列)SELECT * FROM CurrentTable
关闭身份插入:
SET IDENTITY INSERT NewTable 关闭
重命名(或删除)旧表,使其不再使用:
EXEC sp_rename 'CurrentTable', 'BackupTable';
将新表移入:
EXEC sp_rename 'NewTable', 'CurrentTable';
现在你有一个很好的标识列,它比讨厌的触发器要好得多。
【讨论】:
正如 Andomar 所述,在我看来,创建一个新表来适当地支持您的特定要求将是理想的行动方案。
也就是说,如果您希望采用“替代插入触发器”路线,那么下面的 Microsoft 参考提供了一个详细示例。
【讨论】: