2012-08-15 36 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

相关问题