1

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

非常感谢你

编辑:我被迫使用 SQL Server 2000

4

3 回答 3

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);
于 2009-11-02T13:08:52.833 回答
3

“正确”的解决方案几乎肯定是使用触发器,但是如果它属于“无存储过程”的标题,那么您可以通过运行两个连续查询(您应该能够作为一个查询发送您的调用应用程序 - 有助于了解您在 SQL Server 之上使用的环境)。

例如(非常粗略)

INSERT INTO tbl (col1, col2, col3) values (@col1param, @col2param, @col3param);
UPDATE tbl SET not_an_id = an_id WHERE an_id = SCOPE_IDENTITY()
于 2009-11-02T13:39:58.100 回答
2

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

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

于 2009-11-02T13:12:25.230 回答