通过视图修改数据

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

可以通过使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中修改底层基表的数据。

局限性

请参阅 CREATE VIEW 中的“可更新视图”部分。

权限

需要UPDATEINSERTDELETE权限,具体取决于要在目标表上执行的动作。

使用 SQL Server Management Studio

通过视图修改表数据

  1. “对象资源管理器”中,展开包含视图的数据库,然后展开 “视图”

  2. 右键单击该视图,然后选择“编辑前 200 行”

  3. 可能需要修改 SELECT 窗格中的语句以返回要修改的行。

  4. “结果” 窗格中,找到要更改或删除的行。 若要删除行,请右键单击该行,然后选择“删除”。 若要更改一个或多个列中的数据,请修改列中的数据。

    如果视图引用了多个基表,则无法删除行。 只能更新属于单个基表的列。

  5. 若要插入行,请向下滚动到行的结尾并插入新值。

    如果视图引用多个基表,则不能插入行。

使用 Transact-SQL

通过视图更新表数据

  1. “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准栏上,选择“新建查询” 。

  3. 将以下示例复制并粘贴到查询窗口中,然后选择 执行。 此示例通过引用视图 StartDate 中的列为特定雇员更改 EndDateHumanResources.vEmployeeDepartmentHistory列中的值。 此视图从两个表返回值。 此语句会成功,因为修改的列都来自一个基表。

    USE AdventureWorks2022;
    GO
    
    UPDATE HumanResources.vEmployeeDepartmentHistory
        SET StartDate = '20110203',
            EndDate   = GETDATE()
    WHERE LastName = N'Smith'
          AND FirstName = 'Samantha';
    GO
    

有关详细信息,请参阅 UPDATE

通过视图插入表数据

  1. “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准栏上,选择“新建查询” 。

  3. 将以下示例复制并粘贴到查询窗口中,然后选择 执行。 此示例通过指定视图 HumanResources.Department 中的相关列,将一个新行插入到基表 HumanResources.vEmployeeDepartmentHistory。 该语句会成功,因为只指定了一个基表中的列,基表中的其他列具有默认值。

    USE AdventureWorks2022;
    GO
    
    INSERT INTO HumanResources.vEmployeeDepartmentHistory (Department, GroupName)
    VALUES ('MyDepartment', 'MyGroup');
    GO
    

有关详细信息,请参阅 INSERT