在 SQL Server 中,我有两个字段,一个是主要字段并且有一个标识 (AN_ID),然后我有另一个字段,由于遗留原因(不要问)必须更新以反映 AN_ID。目前它们具有完全相同的值。我想知道是否有纯 T-SQL 查询(无存储过程)使其自动递增。
非常感谢你
编辑:我被迫使用 SQL Server 2000
在 SQL Server 中,我有两个字段,一个是主要字段并且有一个标识 (AN_ID),然后我有另一个字段,由于遗留原因(不要问)必须更新以反映 AN_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);
“正确”的解决方案几乎肯定是使用触发器,但是如果它属于“无存储过程”的标题,那么您可以通过运行两个连续查询(您应该能够作为一个查询发送您的调用应用程序 - 有助于了解您在 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()
第二列可以是具有公式 AN_ID 的计算列。
您还可以创建一个别名为 AN_ID 的视图。