在编写大型事务(大量插入,删除,更新)并因此违反Informix中的约束(v10,但也应该适用于其他版本)时,我得到一个不太有用的消息,例如,我违反了约束r190_710.如何找出某个约束所涵盖的表和键,我只知道名称?
Tony Andrews建议(指向URL的不同终点):
从Informix指南到SQL:参考它应该看看系统目录表SYSCONSTRAINTS和SYSINDICES.
该手册中描述了Informix系统目录.
SysConstraints表是分析约束的起点,最肯定的是; 您在该表中找到约束名称,然后您可以从中找到其他详细信息.
但是,您还必须查看其他表,而不仅仅是(甚至直接)SysIndices.
例如,我对数据库中的表有很多NOT NULL约束.对于那些,约束类型是'N',并且不需要在别处寻找更多信息.
约束类型"P"表示主键; 需要通过SysIndexes视图或SysIndices表进行更多分析.类似地,约束类型"U"表示唯一约束,并且需要来自SysIndexes视图或SysIndices表的额外信息.
约束类型"C"表示检查约束; 约束的文本(和二进制编译形式)可以在SysChecks表中找到(数据类型为'T'和'B';数据或多或少用Base-64编码,但没有'='填充在最后并使用62和63的不同字符).
最后,约束类型"R"表示参照完整性约束.您可以使用SysReferences表来查找引用的表,并使用SysIndexes或SysIndices来确定使用引用表和引用表上的哪些索引,从中可以发现相关列.这可能会变得很毛茸茸!