我使用SQL Server 2008 R2
并希望将主表和明细表一起分区。如何在主表中按MasterTypeID
字段对详细信息表进行分区。
我的分区功能是:
CREATE PARTITION FUNCTION MasterTypeFN(int)
AS
RANGE LEFT FOR VALUES (1,2,3)
我的分区架构是:
CREATE PARTITION SCHEME MasterTypeScheme
AS
PARTITION MasterTypeFN
TO ([FG1], [FG2], [FG3], [PRIMARY])
我的主表结构是:
CREATE TABLE [dbo].Master
(
[MasterID] [int] NOT NULL,
[MasterTypeID] [int] NOT NULL,
...
)
ON MasterTypeScheme (MasterTypeID)
我的详细信息表格结构是:
CREATE TABLE [dbo].Detail
(
[DetailID] [int] NOT NULL,
[MasterID] [int] NOT NULL,
...
)
我想关于主分区的Partitioning Detail表。换句话说,我想将主表记录和相关详细信息保存在一个文件组中。
答案 0 :(得分:2)
您应该在详细信息表中定义MasterTypeID
列,并为其定义权限以禁用更新此列。并在Master
表格上创建触发器,将MasterTypeID
表格中的Master
列与MasterTypeID
表格中的Detail
列同步。
答案 1 :(得分:1)
你想要什么是可能的。您需要将MasterTypeID
的值复制到Detail
表的每一行,以便可以将分区函数应用于Detail
。
创建新列Detail.MasterTypeID
并适当填充该列。在应用程序代码中或在数据库中使用触发器。
正确填充列后,您可以应用分区功能。