2009-11-02 50 views
1

在SQL Server中,我有兩個字段,一個是主要的並且有一個標識(AN_ID),然後我有另一個由於遺留原因(不問)必須更新以反映AN_ID。目前它們具有完全相同的價值。我想知道是否有純粹的T-SQL查詢(無存儲過程)使其自動增量。什麼是使兩個字段自動增量的優雅方式?

非常感謝您

編輯:我被迫到SQL Server 2000

回答

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() 
+0

我在此上使用php – 0plus1 2009-11-02 13:49:07

+1

@@ SCOPE_IDENTITY不存在,請改用SCOPE_IDENTITY() – MaxiWheat 2009-11-02 14:55:45

4

如果這兩個字段包含相同的值,那麼你可以使用一個INSERT觸發器或計算列(在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); 
+0

我想用計算列 - 只對SELECT有影響。 – 2009-11-02 13:09:23

+0

我完全忘記了,但是我被困在mssql 2000 :( – 0plus1 2009-11-02 13:14:19

+1

然後使用AFTER INSERT觸發器將第二個字段設置爲AN_ID中的標識值。 – 2009-11-02 13:30:29

2

第二列可能是計算列,公式AN_ID。

您也可以使用AN_ID的別名創建視圖。

相關問題