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

Sql server 使两个字段自动递增的优雅方法是什么?,sql-server,sql-server-2000,auto-increment,Sql Server,Sql Server 2000,Auto Increment,在SQL Server中,我有两个字段,一个是主字段,有一个标识和一个\u ID,然后我有另一个字段,由于遗留原因,不要求必须更新以反映该标识。目前它们的值完全相同。我想知道是否有纯T-SQL查询,没有存储过程使其自动递增 多谢各位 编辑:我被迫使用SQL Server 2000,如果两个字段可以包含相同的值,则可以使用插入触发器或SQL 2005中新的计算列来完成此操作 编辑:像这样的东西应该可以用 CREATE TRIGGER MyTable_AI ON MyTable AFTER INSE

在SQL Server中,我有两个字段,一个是主字段,有一个标识和一个\u ID,然后我有另一个字段,由于遗留原因,不要求必须更新以反映该标识。目前它们的值完全相同。我想知道是否有纯T-SQL查询,没有存储过程使其自动递增

多谢各位


编辑:我被迫使用SQL Server 2000,如果两个字段可以包含相同的值,则可以使用插入触发器或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);

如果两个字段可以包含相同的值,则可以使用insert触发器或SQL 2005中的计算列new来完成此操作

编辑:像这样的东西应该可以用

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);

第二列可以是公式为a_ID的计算列


您还可以创建别名为_ID的视图。

第二列可以是公式为_ID的计算列


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

正确的解决方案几乎肯定是使用触发器,但是,如果这属于“无存储过程”的标题,那么您可以通过运行两个连续的查询(您应该能够将它们作为一个查询从您的调用应用程序发送)来稍微捏造一些事情-了解您在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()

正确的解决方案几乎肯定是使用触发器,但是,如果触发器属于无存储过程的标题,那么您可以通过运行两个连续的查询(您应该能够从您的调用应用程序将其作为一个查询发送)来稍加捏造—了解您在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()

我会选择computed column(计算列)-仅在执行选择时有影响。我完全忘记了,但我坚持使用mssql 2000:然后使用插入后触发器将第二个字段设置为\u ID中的标识值。我会选择computed column-仅在执行选择时有影响。我完全忘记了,但我坚持使用mssql 2000:然后使用插入后触发器触发器将第二个字段设置为\u ID中的标识值。@@SCOPE\u标识不存在,请改用SCOPE\u标识。@@SCOPE\u标识不存在,请改用SCOPE\u标识