如何在 Derby 中获取主键和唯一约束列
如何做到这一点? SYSCOLUMNS 系统表仅包含表的列。 SYSCHECKS 有一个 REFERENCEDCOLUMNS 对象。有什么办法可以得到这个吗?
我知道 JDBC getPrimaryKeys 调用,但它没有获得唯一约束列。
How does one do this? The SYSCOLUMNS system table only has columns for tables. SYSCHECKS has a REFERENCEDCOLUMNS object. Is there any way to get this.
I'm aware of the JDBC getPrimaryKeys call, but that doesn't get unique constraint columns.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Derby - 约束
花了一些时间才找到上述问题;我的问题是上述问题的部分回答的后续问题。
对 SYSKEYS 采取 CONSTRAINTID 会给出一个 CONGLOMERATEID,当对 SYSCONGLOMERATES 采取 CONSTRAINTID 时会产生一个 DESCRIPTOR。 DESCRIPTOR 是一个 POJO,在 baseColumnPositions 方法中包含一个 int 数组。此 int 数组包含约束中列的 SYSCOLUMNS 中的 COLUMNNUMBERS。
如果直接使用 SQL 查询,获取 DESCRIPTOR 字段会生成一个字符串,其中包含必须解析的整数的 CSV 列表。对我来说幸运的是,我碰巧在 Clojure 中工作,因此调用 baseColumnPositions 方法并使用生成的 int 数组很简单。
Derby - constraints
It took some digging to find the above question; my question is a partially answered follow-up question to the one above.
Taking the CONSTRAINTID against SYSKEYS gives a CONGLOMERATEID, which when taken against SYSCONGLOMERATES yields a DESCRIPTOR. The DESCRIPTOR is a POJO that contains an int-array in the baseColumnPositions method. This int-array contains the COLUMNNUMBERS in SYSCOLUMNS of the columns in the constraint.
If querying in straight SQL, getting the DESCRIPTOR field yields a string with a CSV list of ints that have to be parsed. Fortunately for me, I happen to be working in Clojure, so calling the baseColumnPositions method and using the resulting int-array are trivial.