我有一张名为 * Provider_Compliances * 的表格 (提供程序号, ProviderLocation, HistorySequence, ProviderEffectiveDate, PeriodBeginDate, PeriodEndDate, IsCompliant)
ProviderNum |ProviderLocatin |HistorySequence|ProviderEffectiveDate|PeriodBeginDate|PeriodEndDate|IsCompliant
1 | 1 | 2 | 2012-01-01 | 2010-01-03 | 2012-01-01 | No
2 | 2 | 2 | 2012-01-01 | 2012-01-02 | 9999-12-31 | Yes
Provider_Compliances表的主键是(ProviderNumber,HistorySequence,ProviderLocation,ProviderEffectiveDate)。
我正在尝试添加新列(ComplianceNumber),然后将Provider_Compliances表的主键更改为组合键(ComplianceNumber,HistorySequence)。
我不想丢失任何先前存在的数据。
所以,我想这样做:
// 1st,添加新列(ComplianceNumber),默认值为0
ALTER TABLE Provider_Compliances ADD ComplianceNumber DECIMAL(10) DEFAULT 0
// 2nd,更新所有现有行
UPDATE Provider_Compliances SET ComplianceNumber = (NEXT VALUE FOR Provider_Compliances_Sequence)
// 3,修改主键
ALTER TABLE Provider_Compliances DROP PRIMARY KEY
ALTER TABLE Provider_Compliances ADD PRIMARY KEY(ComplianceNumber, HistorySequence)
步骤2的问题是它会将每一行设置为新的ComplianceNumber。 我希望每个具有相同ProviderNumber + ProviderLocation + ProviderEffectiveDate的行都被授予相同的ComplianceNumber。
答案 0 :(得分:1)
您可以使用SQL脚本执行此操作,如下所示