当现有行违法约束时添加约束
如果您使用 MODIFY 子句添加处于启用方式的约束,但因为现有行违反约束而接收到错误消息, 则采取以下步骤来成功添加约束:
1. 添加处于禁用方式的约束。 再次发出 ALTER TABLE 语句,但这次在 MODIFY 子句中指定 DISABLED 关键字。
2. 使用 START VIOLATIONS TABLE 语句启动违例和诊断表。
3. 发出 SET CONSTRAINTS 语句将约束的数据库对象方式切换到启用方式。 当您发出该语句,将在违例表中复制目标表中违反约束的现有行;但是,您会接收到完整性 违例错误消息,且约束保持为禁用。
4. 在违例表上发出 SELECT 语句来检索复制自目标表的不一致行。
您可能需要连接违例表和诊断表来获得所有必要的信息。
5. 在目标表中违反约束的行上采取正确的操作。
6. 在您修正目标表中所有不一致行之后,再次发出 SET 语句以启用被禁用的约束。 此时约束被禁用,并且没有返回任何完整性违例错误消息,因为此时目标表中的所有行均满 足新约束。