是否可以在带有记录的现有表上的表列上创建唯一约束?
$return = $this->client->ImportPlannedVisit(array(
'UniquePlannedVisitID' => $id,
'Date1' => $datedos,
'StartTime' => $timein,
'EndTime' => $timeout,
'AlarmTime' => $alarm_time,
'UniqueClientID' => $ptid,
'UniqueCarerID' => $agent1,
'ChargeCode' => "$hcpcs|$mod1-$mod2-$mod3-$mod4|$pricegroup|$pricecode|$dadscontract",
'contractreference' => $contractreference
));
如果表中包含数据且ALTER TABLE Persons ADD UNIQUE (P_Id)
中的某些数据不唯一,会发生什么?
答案 0 :(得分:3)
如果您尝试在没有唯一值的列上添加唯一键,则会出现ORA:错误。但是,您可以通过以下两种方式克服这一点。
方式1:
ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE (FIELD_NAME) DEFERRABLE NOVALIDATE;
方式2:
ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRIANT_NAME UNIQUE (FIELD_NAME) DISABLE;
ALTER TABLE TABLE_NAME ENABLE NOVALIDATE CONSTRAINT CONSTRAINT_NAME;
首先,我们明确提到Oracle在创建UNIQUE键时不验证现有数据,第二种方式我们最初将UNIQUE键标记为禁用(如果我们将其标记为禁用,则不会验证数据) )然后使用NOVALIDATE关键字
启用它