3、ueindexes 在一个ManagementStudio连接中,运行下列的程序去创造一个表格被叫做CAR。表格基于它的构成和模型定义一个UNIQUEconstraint在CAR上。 CREATETABLEdbo.CAR ( CARIDINTIDENTITY(1,1)NOTNULL, MAKEVARCHAR(10)NOTNULL, MODELVARCHAR(10)NOTNULL, TOTALDOORSTINYINTNOTNULL, TOTALCYLINDERSTINYINTNOTNULL, C
4、ONSTRAINTPK_CARPRIMARYKEYNONCLUSTERED(CARID), CONSTRAINTUQ_CARUNIQUENONCLUSTERED(MAKE,MODEL) ) GO 运行SP_HELPCAR显示,theengine已经创造了包括这个约束和一个索引支持在内。 图一:运行SP_HELPCAR 一个要求出现在我的桌面上。以报告为目的,管理想要通过yearmade跟踪cars,另外,对结构和模型。我们将改变这个表格使之包含一个年柱。 ALTERTABLEDBO.CAR AD
5、D[YEAR]SMALLINT GO 增加这个柱体要求我去改变约束的唯一性,否则,我将无法通过结构和模型而不管年柱增加比一个多的car。另外,不允许通过结构,模型和年柱复制cars可能是一个好的主意。结果是我将重新创作这个约束的UniqueIndex去包含年柱。 DROPINDEXDBO.CAR.UQ_CAR GO CREATEUNIQUEINDEXUQ_CARONDBO.CAR(MAKE,MODEL,[YEAR]) GO 运行上方的代码,你将看见随后的错误提示: 图二:错误提示 伙计,这个看
6、起来丑陋吧。DROP失败是因为约束依靠索引,它必须匹配约束的定义。在我们的例子中去改变唯一性,我们可以先drop然后重复增加约束。 ALTERTABLEDBO.CAR DROPCONSTRAINTUQ_CAR GO ALTERTABLEDBO.CAR ADDCONSTRAINTUQ_CARUNIQUE(MAKE,MODEL,[YEAR]) GO 重新运行SP_HELPCAR,显示有改变在进行。 图三:第二次运行SP_HELPCAR 我刚刚注意到在表格上没有clusteredindex。自从我们