SQL将一列更改为等于另一列的值

时间:2012-08-15 22:34:48

标签: sql sql-server

我有一个column1,它当前匹配同一个表中另一个column2中的所有内容。我现在需要在添加新行并填写column2时自动更新column1。这是在SQL中。

我在想

ALTER TABLE dbo.Table
alter column column1 as column2

可能有效,但似乎没有。

是否可以使用alter语句(即没有触发器)来执行此操作?

1 个答案:

答案 0 :(得分:2)

每当Column1更改时,您都可以使用TRIGGER自动更新Column2:

--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)

您还可以将Column2设为computed column

ALTER TABLE Table
  ADD Column2 AS (Column1)

如果始终希望两者同步,我建议您删除现有列并添加到具有相同名称的新计算列中。

第三种方法是创建一个只暴露Column1两次的VIEW:

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