我有一個column1,它當前與該表中另一個column2中的所有內容匹配。我現在需要column1在添加新行並填寫column2時自動更新。這是在SQL中。SQL將一列修改爲等於另一列的值
我想
ALTER TABLE dbo.Table
alter column column1 as column2
可能會奏效,但它似乎沒有。
是否有可能沿着alter語句的行進行此操作(即沒有觸發器)?
我有一個column1,它當前與該表中另一個column2中的所有內容匹配。我現在需要column1在添加新行並填寫column2時自動更新。這是在SQL中。SQL將一列修改爲等於另一列的值
我想
ALTER TABLE dbo.Table
alter column column1 as column2
可能會奏效,但它似乎沒有。
是否有可能沿着alter語句的行進行此操作(即沒有觸發器)?
可以使用,只要列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
我的列_當前_匹配另一列。我不想添加一個新列,我希望將我當前的列更改爲不同的行爲。 – user912447 2012-08-15 22:45:44
如果第2列總是等於第1列的當前值,那麼您應該按照Mike的建議將其作爲計算列。否則,使用Mike的第一個建議來創建一個觸發器,以便在添加新行時將其設置爲column1的值。 – 2012-08-15 22:52:38
我一直希望能夠把它變成電腦領域,但是如果不創建一個新的列,這是不可能的,我可以添加觸發器。如果沒有人能夠通過類似alter語句的方式提供這種方法,那麼我會將其標記爲我的答案。謝謝。 – user912447 2012-08-15 22:54:32
的數據庫系統? SQL Server? MySQL的? – Jim 2012-08-15 22:37:00
對不起,當我說SQL時,我不是指MySQL。服務器。 – user912447 2012-08-15 22:38:04