我使用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,
...
)
我想对主分区进行分区详细信息表。换句话说,我想将主表记录和相关详细信息保存在一个文件组中。
您应该在详细信息表中定义MasterTypeID
列并定义对其禁用更新此列的权限。 并在Master
表上创建触发器MasterTypeID
以将表中列Master
与表中MasterTypeID
列同步Detail
。
你想要的都是可能的。您需要将 MasterTypeID
的值复制到Detail
表的每一行,以便将分区函数应用于Detail
。
创建一个新列Detail.MasterTypeID
并相应地填充该列。在应用程序代码中或使用数据库中的触发器。
正确填充列后,您可以应用分区功能。