2012-08-15 676 views
0

我有一個column1,它當前與該表中另一個column2中的所有內容匹配。我現在需要column1在添加新行並填寫column2時自動更新。這是在SQL中。SQL將一列修改爲等於另一列的值

我想

ALTER TABLE dbo.Table 
alter column column1 as column2 

可能會奏效,但它似乎沒有。

是否有可能沿着alter語句的行進行此操作(即沒有觸發器)?

+0

的數據庫系統? SQL Server? MySQL的? – Jim 2012-08-15 22:37:00

+0

對不起,當我說SQL時,我不是指MySQL。服務器。 – user912447 2012-08-15 22:38:04

回答

2

可以使用,只要列1改變TRIGGER自動更新列2:

--My SQL Server isn't up to par, there's probably a better way to do this 
CREATE TRIGGER MyTrigger 
ON Table 
AFTER UPDATE 
AS 
    UPDATE Table 
    SET Column2 = Column1 
    WHERE Id IN (SELECT DISTINCT Id FROM Inserted) 

您還可以列2一computed column

ALTER TABLE Table 
    ADD Column2 AS (Column1) 

如果總是希望兩個是在同步,我建議只刪除你現有的列,並添加在一個新的計算列與相同的名稱。

第三種方法是創建一個視圖,簡單地暴露列1次:

CREATE VIEW MyView AS 
    SELECT Column1, Column1 as Column2 FROM Table 
+0

我的列_當前_匹配另一列。我不想添加一個新列,我希望將我當前的列更改爲不同的行爲。 – user912447 2012-08-15 22:45:44

+0

如果第2列總是等於第1列的當前值,那麼您應該按照Mike的建議將其作爲計算列。否則,使用Mike的第一個建議來創建一個觸發器,以便在添加新行時將其設置爲column1的值。 – 2012-08-15 22:52:38

+0

我一直希望能夠把它變成電腦領域,但是如果不創建一個新的列,這是不可能的,我可以添加觸發器。如果沒有人能夠通過類似alter語句的方式提供這種方法,那麼我會將其標記爲我的答案。謝謝。 – user912447 2012-08-15 22:54:32