如何创建触发器以将值插入到插入时为 Max([ID Field])+1 的 ID 字段中

Posted

技术标签:

【中文标题】如何创建触发器以将值插入到插入时为 Max([ID Field])+1 的 ID 字段中【英文标题】:How do I create a trigger to insert a value into an ID field that is Max([ID Field])+1 on insert 【发布时间】:2012-07-02 13:16:58 【问题描述】:

当我添加新记录时,我希望 SQL Server 自动添加新 ID。

已经有一些记录已经迁移过来(从 Access),在我完成为其他所需功能准备服务器之前,我将手动迁移更多记录(如果这会影响任何可能的答案)。

实现这一点的最简单方法是什么。

【问题讨论】:

通常情况下,不推荐使用这些方法,因为这个简单的系统很可能在负载下惨遭失败 - 抛出重复值。 【参考方案1】:

最简单的方法是将列设为IDENTITY column。 Here is an example of how to do this(不像ALTER TABLE那么简单)。

【讨论】:

谢谢 Aaron,因为无论如何我都会使用 MS Access 作为前端。我想我会在那里控制父 ID。家长 ID 不多(一天不超过三个),所以不会有问题。【参考方案2】:

使用Identity 字段类型。这将使用序列中的下一个可用数字自动为您创建一个值。

这是一个如何在现有表上创建Identity 列(添加新列)的示例

ALTER TABLE MyTable ADD IdColumn INT IDENTITY(1,1)

【讨论】:

以上是关于如何创建触发器以将值插入到插入时为 Max([ID Field])+1 的 ID 字段中的主要内容,如果未能解决你的问题,请参考以下文章

Postgres 创建触发器函数以在允许插入之前将值从一列复制到另一列

如何使用触发器和 if 条件将值插入 SQL 表?

在oracle中插入表B后创建触发器以将新行添加到表A中时出错

需要帮助以获取访问表单以将值插入查询

插入条件后创建触发器

为不同的插入创建触发器