通过视图修改数据

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 数据库

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

局限性

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

权限

需要UPDATE、INSERT或DELETE权限,具体取决于要在目标表上执行的动作。

使用 SQL Server Management Studio

通过视图修改表数据

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

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

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

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

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

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

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

使用 Transact-SQL

通过视图更新表数据

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

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

  3. 将以下示例复制并粘贴到查询窗口中,然后选择 执行。 此示例通过引用视图 StartDate 中的列,更改特定员工的 EndDate 和 HumanResources.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。