20260821230656
This commit is contained in:
1 parent
2e5d532f23
commit
c43b4c8364
144 files changed
+7665
-242
No files matched your search
@@ -0,0 +1,39 @@
|
||||
import java.io.FileInputStream;
|
||||
import java.sql.*;
|
||||
import java.util.Properties;
|
||||
|
||||
public class FkPairs {
|
||||
public static void main(String[] args) throws Exception {
|
||||
Properties props = new Properties();
|
||||
try (FileInputStream in = new FileInputStream(args[0])) { props.load(in); }
|
||||
try (Connection conn = DriverManager.getConnection(props.getProperty("url"), props.getProperty("username"), props.getProperty("password"))) {
|
||||
String sql =
|
||||
"SELECT OBJECT_NAME(fk.parent_object_id) AS parent_table, " +
|
||||
" OBJECT_NAME(fk.referenced_object_id) AS ref_table, " +
|
||||
" fk.name AS fk_name, " +
|
||||
" STRING_AGG(pc.name + ' -> ' + rc.name, ', ') WITHIN GROUP (ORDER BY fkc.constraint_column_id) AS cols " +
|
||||
"FROM sys.foreign_keys fk " +
|
||||
"JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id " +
|
||||
"JOIN sys.columns pc ON pc.object_id = fk.parent_object_id AND pc.column_id = fkc.parent_column_id " +
|
||||
"JOIN sys.columns rc ON rc.object_id = fk.referenced_object_id AND rc.column_id = fkc.referenced_column_id " +
|
||||
"WHERE fk.parent_object_id <> fk.referenced_object_id " +
|
||||
"GROUP BY fk.name, fk.parent_object_id, fk.referenced_object_id " +
|
||||
"ORDER BY parent_table, fk_name";
|
||||
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql)) {
|
||||
System.out.println("=== CROSS-TABLE FK ASSOCIATIONS (two tables linked) ===");
|
||||
String curPair = "";
|
||||
int n = 0;
|
||||
while (rs.next()) {
|
||||
String pair = rs.getString("parent_table") + " -> " + rs.getString("ref_table");
|
||||
if (!pair.equals(curPair)) {
|
||||
curPair = pair;
|
||||
n++;
|
||||
System.out.println();
|
||||
System.out.println("[" + n + "] " + pair);
|
||||
}
|
||||
System.out.println(" FK " + rs.getString("fk_name") + " ( " + rs.getString("cols") + " )");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user