返回表格集合中的下一个可用PK

时间:2013-10-23 17:26:22

标签: tsql cursor report

我正在构建一系列已知表及其主键的报告,例如:

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技能。

1 个答案:

答案 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 '

顺便说一下,上面的大部分都来自这个答案:

https://stackoverflow.com/a/96049/37613