【发布时间】:2016-02-02 22:04:18
【问题描述】:
我正在尝试确保在我的 derby 数据库中创建了外键,第一步是检查外键是否存在并应用于正确的列。
我一直在检查像 sys.sysforeignkeys 和 sys.sysconstraints 这样的系统表,但是当我通过各种 sys* 表从一个表到另一个表追逐 id 时,我似乎无法弄清楚如何在 sys 中映射一行.sysforeignkeys 到列名中。
我必须执行什么 SQL 查询来检查以下 ALTER TABLE 是否已经执行?
ALTER TABLE ClipPoints ADD FOREIGN KEY(clipName) REFERENCES LABELS(label)
这需要是一个完全自动化的过程,无需用户干预。
【问题讨论】:
-
SYSFOREIGNKEYS.CONGLOMERATEID引用一个索引。我想你需要加入SYSCONGLOMERATES -
这是我追逐的参考资料之一。 conglomerates 表有列 SCHEMAID TABLEID CONGLOMERATENUMBER CONGLOMERATENAME ISINDEX DESCRIPTOR ISCONSTRAINT CONGLOMERATEID 并且这些都没有将我引导到列名。
-
既然你在使用Java,为什么不使用
DatabaseMeta.getImportedKeys()? -
getImportedKeys() 似乎没有行。 getExportedKeys() 似乎显示了我需要的信息。
-
我总是忘记这两种方法“指向”哪个方向;)