当现有行违法约束时添加约束

如果您使用 MODIFY 子句添加处于启用方式的约束,但因为现有行违反约束而接收到错误消息,则采取以下步骤来成功添加约束:
  1. 添加处于禁用方式的约束。

    再次发出 ALTER TABLE 语句,但这次在 MODIFY 子句中指定 DISABLED 关键字。

  2. 使用 START VIOLATIONS TABLE 语句启动违例和诊断表。
  3. 发出 SET CONSTRAINTS 语句将约束的数据库对象方式切换到启用方式。

    当您发出该语句,将在违例表中复制目标表中违反约束的现有行;但是,您会接收到完整性违例错误消息,且约束保持为禁用。

  4. 在违例表上发出 SELECT 语句来检索复制自目标表的不一致行。

    您可能需要连接违例表和诊断表来获得所有必要的信息。

  5. 在目标表中违反约束的行上采取正确的操作。
  6. 在您修正目标表中所有不一致行之后,再次发出 SET 语句以启用被禁用的约束。

    此时约束被禁用,并且没有返回任何完整性违例错误消息,因为此时目标表中的所有行均满足新约束。