我有一个名为*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_Compliance 表的主键更改为复合键(ComplianceNumber、HistorySequence)。
我不想丢失任何预先存在的数据。
所以,我想这样做:
//1st,添加默认值为0的新列(ComplianceNumber)
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。