sql-server – 信息架构和主键

前端之家收集整理的这篇文章主要介绍了sql-server – 信息架构和主键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何使用主键打印出列的“主键”?

如果表具有主键,而不是带有主键的一列和其他列在keyType中为空,则为所有列获取“主键”.

  1. SELECT c.TABLE_NAME,c.COLUMN_NAME,c.DATA_TYPE,c.Column_default,c.character_maximum_length,c.numeric_precision,c.is_nullable,CASE
  2. WHEN u.CONSTRAINT_TYPE = 'PRIMARY KEY' THEN 'primary key'
  3. ELSE ''
  4. END AS KeyType
  5. FROM INFORMATION_SCHEMA.COLUMNS as c
  6. LEFT JOIN information_schema.table_constraints as u ON c.table_name = u.table_name
  7. ORDER BY table_name

解决方法

  1. SELECT c.TABLE_NAME,CASE WHEN pk.COLUMN_NAME IS NOT NULL THEN 'PRIMARY KEY' ELSE '' END AS KeyType
  2. FROM INFORMATION_SCHEMA.COLUMNS c
  3. LEFT JOIN (
  4. SELECT ku.TABLE_CATALOG,ku.TABLE_SCHEMA,ku.TABLE_NAME,ku.COLUMN_NAME
  5. FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc
  6. INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS ku
  7. ON tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
  8. AND tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME
  9. ) pk
  10. ON c.TABLE_CATALOG = pk.TABLE_CATALOG
  11. AND c.TABLE_SCHEMA = pk.TABLE_SCHEMA
  12. AND c.TABLE_NAME = pk.TABLE_NAME
  13. AND c.COLUMN_NAME = pk.COLUMN_NAME
  14. ORDER BY c.TABLE_SCHEMA,c.TABLE_NAME,c.ORDINAL_POSITION

猜你在找的MsSQL相关文章