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