在SQL Server中,我有两个字段,一个是主要的,并且有一个标识(AN_ID),然后我有另一个字段,由于遗留原因(不要问)必须更新反映AN_ID。目前,它们具有完全相同的值。我想知道是否有纯粹的T-SQL查询(没有存储过程)使其自动增加。
非常感谢
编辑:我被迫使用SQL Server 2000
答案 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的视图。