在分区视图中修改数据
更新日期: 2005 年 12 月 5 日
如果分区视图不可更新,则它只能作为原始表的只读副本。可更新的分区视图可提供原始表的所有功能。
当视图是一组 SELECT 语句,这些语句各自的结果集使用 UNION ALL 语句合并在一起时,该视图被视为可更新的分区视图。每个 SELECT 语句引用一个 SQL Server 基表。该表可以是本地表,也可以是使用由四部分组成的名称、OPENROWSET 函数或 OPENDATASOURCE 函数引用的链接表(不能使用指定了直接传递查询的 OPENDATASOURCE 或 OPENROWSET 函数)。
此外,引用该视图的数据修改语句必须遵守为 INSERT、UPDATE 和 DELETE 语句定义的规则。
如果分区视图分布在多个服务器中,应避免对基表使用触发器或级联操作。触发器或级联操作可能会更改基础数据,这将影响视图定义。
只有当用户对视图下的每个表都具有 CONTROL、ALTER、TAKE OWNERSHIP 或 VIEW DEFINITION 权限时,才能更新分布式分区视图。有关详细信息,请参阅分布式分区视图元数据可见性故障排除。
注意: |
---|
必须装有 Microsoft SQL Server 2005 Enterprise Edition 或 Microsoft SQL Server 2005 Developer Edition,才能通过分布式分区视图修改数据。但是,在 SQL Server 2005 的所有版本中都可以通过本地分区视图修改数据。 |
INSERT 语句
INSERT 语句通过分区视图将数据添加到成员表中。INSERT 语句必须遵循下列规则:
- 所有列必须包含在 INSERT 语句中,即使列在基表中可能为 NULL 或列在基表中定义了 DEFAULT 约束。
- 不能在 INSERT 语句的 VALUES 子句中指定 DEFAULT 关键字。
- INSERT 语句提供的值必须符合在一个成员表的分区列上定义的 CHECK 约束逻辑。
- 如果一个成员表包含具有标识属性的列,则不能使用 INSERT 语句。
- 如果成员表包含 timestamp 列,则不能使用 INSERT 语句。
- 如果存在与同一视图或任意成员表的自联接,则不能使用 INSERT 语句。
UPDATE 语句
UPDATE 语句通过分区视图在一个或多个成员表中修改数据。UPDATE 语句必须遵循下列规则:
- UPDATE 语句不能将 DEFAULT 关键字指定为 SET 子句中的值,即使列在相应的成员表中定义了 DEFAULT 值。
- 不能更改带有标识属性的列的值,但是可以更新其他列。
- 如果列包含 text、image 或 ntext 数据,则不能更改 PRIMARY KEY 的值。
- 如果基表包含 timestamp 列,则不能进行更新。
- 如果存在与同一视图或任意成员表的自联接,则不能进行更新。
DELETE 语句
DELETE 语句通过分区视图在一个或多个成员表中删除数据。如果存在与同一视图或任意成员表的自联接,则不能使用 DELETE 语句。
请参阅
概念
帮助和信息
更改历史记录
版本 | 历史记录 |
---|---|
2005 年 12 月 5 日 |
|