使两个字段自动递增的优雅方法是什么?

时间:2009-11-02 13:01:24

标签: sql-server sql-server-2000 auto-increment

在SQL Server中,我有两个字段,一个是主要的,并且有一个标识(AN_ID),然后我有另一个字段,由于遗留原因(不要问)必须更新反映AN_ID。目前,它们具有完全相同的值。我想知道是否有纯粹的T-SQL查询(没有存储过程)使其自动增加。

非常感谢

编辑:我被迫使用SQL Server 2000

3 个答案:

答案 0 :(得分:4)

如果两个字段都可以包含相同的值,那么您可以使用插入触发器或计算列(SQL 2005中的新增)来实现此目的。

编辑:这样的事情应该有用。

CREATE TRIGGER MyTable_AI ON MyTable
AFTER INSERT AS
    UPDATE MyTable
    SET OTHER_ID = AN_ID
    WHERE AN_ID IN (SELECT AN_ID FROM inserted);

答案 1 :(得分:3)

“正确”的解决方案几乎肯定会使用触发器,但是如果它属于“无存储过程”的标题,那么你可以通过运行两个连续的查询(你应该能够发送它)来稍微捏造一些东西。来自您的调用应用程序的一个查询 - 了解您在SQL Server上使用的环境非常有用。

e.g。 (非常粗略)

INSERT INTO tbl (col1, col2, col3) values (@col1param, @col2param, @col3param);
UPDATE tbl SET not_an_id = an_id WHERE an_id = SCOPE_IDENTITY()

答案 2 :(得分:2)

第二列可以是具有公式AN_ID的计算列。

您还可以创建一个别名为AN_ID的视图。