我想使用java DatabaseMetaData获取外键并尝试。
但是我只得到外键引用pk列而无法引用唯一列
我尝试使用getCrossReference(),getImportedKeys()模式和相同的结果。
这是我的代码,DB是Oracle11g。
ResultSet rset = databaseMetaData.getImportedKeys(null, dbName, tableName);
while(rset.next()){
String column_name = rset.getString("FKCOLUMN_NAME");
String pk_table = rset.getString("PKTABLE_NAME");
String pk_column = rset.getString("PKCOLUMN_NAME");
String constraint_name = rset.getString("FK_NAME");
System.out.println(column_name + " ==> " + pk_column + "(TBL:" + pk_table + ")(CN:" + constraint_name + ")");
}
rset.close();
该表有两个外键(一个是引用pk列,另一个是引用唯一列)但是我只有一个日志。
有什么错误吗?
感谢。
答案 0 :(得分:0)
要引用唯一列,您必须在getString中使用PKCOLUMN_NAME
rset.getString("PKCOLUMN_NAME");
这是普通代码:
ResultSet rset = databaseMetaData.getImportedKeys(null, dbName, tableName);
while(rset.next()){
String column_name = rset.getString("FKCOLUMN_NAME");
String pk_table = rset.getString("PKTABLE_NAME");
String pk_column = rset.getString("PKCOLUMN_NAME");
String constraint_name = rset.getString("PKCOLUMN_NAME");
System.out.println(" "+column_name+" reference to "+ pk_table+"("+constraint_name+")");
}
rset.close();