我正在构建一系列已知表及其主键的报告,例如:
BOOKS.bookid
AUTHORS.authorid
GENRE.genreid
我想要做的是构建一个t-sql报告,只显示表,主键和 next 可用的PK,例如:
**tabl_name prim_key avail_key**
BOOKS BOOKID 281
AUTHORS AUTHORID 29
GENRE GENREID 18
我已经通过使用information_schema获得了表名及其PK,但是以某种方式将其与实际表连接以获得其下一个可用的PK是难以理解的。我猜测有一些带有游标解决方案的动态sql,但这最大限度地提高了我的sql技能。
答案 0 :(得分:0)
试试这个:
SELECT Col.TABLE_NAME, Col.Column_Name, ident_current(Col.TABLE_NAME) from
INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab,
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col
WHERE
Col.Constraint_Name = Tab.Constraint_Name
AND Col.Table_Name = Tab.Table_Name
AND Constraint_Type = 'PRIMARY KEY '
顺便说一下,上面的大部分都来自这个答案: