违反表和诊断表
当您为目标表启动违反表时,在对目标表的 INSERT、UPDATE 和 DELETE 操作期间,
违反约束和唯一索引的任何行都不会导致整个操作失败,但会被过滤到违反表。诊断表包
含关于由违反表中每一行导致的完整性违反的信息。通过检查这些表,您可标识失败的原
因,并通过修正违反或回滚操作来采取更正行动。
在您为目标表创建违反表之后,您不可改变基础表或违反表的列或分片。在您已启动了违
反表之后,如果您改变目标表上的约束,则将不符合的行过滤到违反表。
要获取关于如何启动和停止违反表的信息,请参阅《GBase 8s SQL 指南:语法》中的 START
VIOLATIONS TABLE 和 STOP VIOLATIONS TABLE 语句。
违反表与数据库对象模式的关系
如果您将定义在表上的约束和唯一索引设置为过滤模式,但您未为此目标表创建违反表和
诊断表,则在插入、更新或删除操作期间,违反约束或唯一索引要求的任何行都不过滤到
违反表。相反,您会收到错误消息,指示您必须为目标表启动违反表。
类似地,如果您将禁用的约束或禁用的唯一索引设置为启用模式或过滤模式,且您想要能
够标识不满足约束或唯一索引要求的现有的行,则在您发出 SET Database Object Mode 语
句之前必须创建违反表。
GBase 8s V8.8 SQL 指南:教程-7.6.4(6)
最新推荐文章于 2024-07-20 20:04:43 发布