* Provider_Compliances * (ProviderNum、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)に変更しようとしています。
既存のデータを失いたくありません。
だから、私はそれをこのようにすることを考えました:
// 1番目に、デフォルト値0の新しい列(ComplianceNumber)を追加します
ALTER TABLE Provider_Compliances ADD ComplianceNumber DECIMAL(10) DEFAULT 0
// 2番目に、既存のすべての行を更新します
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を付与したいと思います。