java怎样判断sql主键重复,SQL Server:使用sql查询获取表主键[重复]

This should list all the constraints and at the end you can put your filters

/* CAST IS DONE , SO THAT OUTPUT INTEXT FILE REMAINS WITH SCREEN LIMIT*/

WITH ALL_KEYS_IN_TABLE (CONSTRAINT_NAME,CONSTRAINT_TYPE,PARENT_TABLE_NAME,PARENT_COL_NAME,PARENT_COL_NAME_DATA_TYPE,REFERENCE_TABLE_NAME,REFERENCE_COL_NAME)

AS

(

SELECT CONSTRAINT_NAME= CAST (PKnUKEY.name AS VARCHAR(30)) ,

CONSTRAINT_TYPE=CAST (PKnUKEY.type_desc AS VARCHAR(30)) ,

PARENT_TABLE_NAME=CAST (PKnUTable.name AS VARCHAR(30)) ,

PARENT_COL_NAME=CAST ( PKnUKEYCol.name AS VARCHAR(30)) ,

PARENT_COL_NAME_DATA_TYPE= oParentColDtl.DATA_TYPE,

REFERENCE_TABLE_NAME='' ,

REFERENCE_COL_NAME=''

FROM sys.key_constraints as PKnUKEY

INNER JOIN sys.tables as PKnUTable

ON PKnUTable.object_id = PKnUKEY.parent_object_id

INNER JOIN sys.index_columns as PKnUColIdx

ON PKnUColIdx.object_id = PKnUTable.object_id

AND PKnUColIdx.index_id = PKnUKEY.unique_index_id

INNER JOIN sys.columns as PKnUKEYCol

ON PKnUKEYCol.object_id = PKnUTable.object_id

AND PKnUKEYCol.column_id = PKnUColIdx.column_id

INNER JOIN INFORMATION_SCHEMA.COLUMNS oParentColDtl

ON oParentColDtl.TABLE_NAME=PKnUTable.name

AND oParentColDtl.COLUMN_NAME=PKnUKEYCol.name

UNION ALL

SELECT CONSTRAINT_NAME= CAST (oConstraint.name AS VARCHAR(30)) ,

CONSTRAINT_TYPE='FK',

PARENT_TABLE_NAME=CAST (oParent.name AS VARCHAR(30)) ,

PARENT_COL_NAME=CAST ( oParentCol.name AS VARCHAR(30)) ,

PARENT_COL_NAME_DATA_TYPE= oParentColDtl.DATA_TYPE,

REFERENCE_TABLE_NAME=CAST ( oReference.name AS VARCHAR(30)) ,

REFERENCE_COL_NAME=CAST (oReferenceCol.name AS VARCHAR(30))

FROM sys.foreign_key_columns FKC

INNER JOIN sys.sysobjects oConstraint

ON FKC.constraint_object_id=oConstraint.id

INNER JOIN sys.sysobjects oParent

ON FKC.parent_object_id=oParent.id

INNER JOIN sys.all_columns oParentCol

ON FKC.parent_object_id=oParentCol.object_id /* ID of the object to which this column belongs.*/

AND FKC.parent_column_id=oParentCol.column_id/* ID of the column. Is unique within the object.Column IDs might not be sequential.*/

INNER JOIN sys.sysobjects oReference

ON FKC.referenced_object_id=oReference.id

INNER JOIN INFORMATION_SCHEMA.COLUMNS oParentColDtl

ON oParentColDtl.TABLE_NAME=oParent.name

AND oParentColDtl.COLUMN_NAME=oParentCol.name

INNER JOIN sys.all_columns oReferenceCol

ON FKC.referenced_object_id=oReferenceCol.object_id /* ID of the object to which this column belongs.*/

AND FKC.referenced_column_id=oReferenceCol.column_id/* ID of the column. Is unique within the object.Column IDs might not be sequential.*/

)

select * from ALL_KEYS_IN_TABLE

where

PARENT_TABLE_NAME in ('YOUR_TABLE_NAME')

or REFERENCE_TABLE_NAME in ('YOUR_TABLE_NAME')

ORDER BY PARENT_TABLE_NAME,CONSTRAINT_NAME;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值