Files
workspace/code/fms/.tmp-fkcheck/Verify.java
T
2026-08-21 23:06:56 +08:00

41 lines
2.6 KiB
Java

import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;
public class Verify {
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"))) {
// 1. identity columns
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(
"SELECT OBJECT_NAME(ic.object_id) AS tbl, ic.name, ic.is_identity FROM sys.identity_columns ic WHERE ic.name='b_id'")) {
System.out.println("== identity columns on b_id ==");
if (!rs.next()) System.out.println(" NONE (all s_* tables b_id no longer identity)");
else { do { System.out.println(" " + rs.getString("tbl")); } while (rs.next()); }
}
// 2. all PKs still exist
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(
"SELECT OBJECT_NAME(kc.parent_object_id) AS tbl, kc.name FROM sys.key_constraints kc WHERE kc.type='PK' AND kc.parent_object_id IN (SELECT object_id FROM sys.tables WHERE name LIKE 's' + char(95) + '%') ORDER BY 1")) {
System.out.println("== PKs ==");
while (rs.next()) System.out.println(" " + rs.getString("tbl") + " " + rs.getString("name"));
}
// 3. table count
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM sys.tables")) {
rs.next(); System.out.println("total_tables=" + rs.getInt(1));
}
// 4. FK count (should still be 0)
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM sys.foreign_keys")) {
rs.next(); System.out.println("physical_fk_count=" + rs.getInt(1));
}
// 5. b_user unchanged
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT is_identity FROM sys.columns WHERE object_id=OBJECT_ID('b_user') AND name='b_id'")) {
rs.next(); System.out.println("b_user.b_id is_identity=" + rs.getBoolean("is_identity"));
}
// 6. select from b_user to confirm it's still readable
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM b_user")) {
rs.next(); System.out.println("b_user row_count=" + rs.getInt(1));
}
}
}
}