我在Oracle中有一个表ABC,它有分区b100和b200,相应地保存了100和200之类的数据。当我们尝试插入除这些分区之外的数据时,Oracle开发人员会抛出一个错误。现在,当我们试图在SQL SERVER中实现同样的事情时,除了这些分区值之外的数据也被插入到表中。在SQL SERVER中,未分区的数据进入PRIMARY文件组或最后一个文件组,这是我们所不希望的
az31mfrm1#
SQL Server 表 分区 是 本 机 范围 分区 , 不 约束 数据 。 每个 可能 的 分区 列 值 始终 有 一 个 分区 。使用 CHECK 约束 条件 ( 或者 FOREIGN KEY ) 来 限制 可以 插入 到 表 中 的 值 。 这些 约束 条件 可以 与 分区 边界 相同 , 以便 在 精确 的 值 列表 ( 而 不是 范围 ) 上 有效 地 实施 分区 。
CHECK
FOREIGN KEY
ALTER TABLE dbo.YourPartitionedTable ADD CONSTRAINT CK_YourPartitionedTable_YourPartitioningColumn CHECK (YourPartitioningColumn IN (100,200));
中 的 每 一 个在 RANGE LEFT 分区 函数 的 情况 下 , 最 后 一 个 分区 将 始终 为 空 。 相反 , 在 RANGE RIGHT 分区 函数 的 情况 下 , 第 一 个 分区 将 为 空 。
RANGE LEFT
RANGE RIGHT
1条答案
按热度按时间az31mfrm1#
SQL Server 表 分区 是 本 机 范围 分区 , 不 约束 数据 。 每个 可能 的 分区 列 值 始终 有 一 个 分区 。
使用
CHECK
约束 条件 ( 或者FOREIGN KEY
) 来 限制 可以 插入 到 表 中 的 值 。 这些 约束 条件 可以 与 分区 边界 相同 , 以便 在 精确 的 值 列表 ( 而 不是 范围 ) 上 有效 地 实施 分区 。中 的 每 一 个
在
RANGE LEFT
分区 函数 的 情况 下 , 最 后 一 个 分区 将 始终 为 空 。 相反 , 在RANGE RIGHT
分区 函数 的 情况 下 , 第 一 个 分区 将 为 空 。