我正在尝试列出模式中的所有外键,并为每个键列出所涉及的列。所以我正在查询pg_catalog.pg_constraint
和information_schema.columns
表。
我需要一种方法来区分键,进行第二次查询并检索键列列表。
我想使用约束名称(表中的conname
列pg_catalog.pg_constraint
),但是关于 pg_constraint的PostgreSQL 文档说约束名称不一定是唯一的!为什么?我在文档中找不到有关此事实的其他信息。
情侣connamespace
+conname
独一无二吗?
这是我的查询:
从给定的模式中检索外键列表:
SELECT
conname AS constraint_name,
conrelid::regclass AS referring_table,
confrelid::regclass AS referenced_table
FROM pg_catalog.pg_constraint
WHERE contype = 'f' AND ((conrelid::regclass || '' LIKE '<my_schema_name>.%') OR (confrelid::regclass || '' LIKE '<my_schema_name>.%'))
Run Code Online (Sandbox Code Playgroud)
检索给定键的列列表:
SELECT
c.column_name AS key_column
FROM information_schema.columns c
JOIN pg_catalog.pg_constraint r ON (c.table_schema || '.' || c.table_name) = (r.conrelid::regclass || '')
WHERE r.conname = '<my_constraint_name>'
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
我正在创建一个可以更改语言的简单程序,我将转换字符串数组中myBundle.properties文件中的属性列表.
这是myBundle.properties文件:
#default
test1=Hello1
test2=Hello2
test3=Hello3
test4=Hello4
test5=Hello5
test6=Hello6
Run Code Online (Sandbox Code Playgroud)
这是Java代码:
import java.util.*;
class BundleTest {
BundleTest() {
String[] s = returnStringArray(Locale.ENGLISH);
for(int i=0; i<s.length; i++) {
System.out.println(s[i]);
}
}
private String[] returnStringArray(Locale language) {
try {
ResourceBundle labels = ResourceBundle.getBundle("myBundle", language);
Enumeration<String> keys = labels.getKeys();
Vector v = new Vector();
String key = null;
while (keys.hasMoreElements()) {
v.add(keys.nextElement());
}
String[] s = new String[v.size()];
for(int i=0; i<s.length; i++) {
s[i] = (String)v.elementAt(i);
}
return s;
} catch (MissingResourceException mre) { …
Run Code Online (Sandbox Code Playgroud)