[SQL] SQL Server는 테이블 제약을 받기 2008-
SQLSQL Server는 테이블 제약을 받기 2008-
당신이 날은 또한 검색하는 모든 테이블에 제약 조건, 각 테이블의 제약 조건의 수, 어떤 제약 조건이없는 테이블에 대해 NULL을 표시하는 쿼리를 프레임 도움이 수 없습니다. 사전에 들으!
이것은 내가 지금까지 무엇을 가지고 :
Select SysObjects.[Name] As [Constraint Name] ,
Tab.[Name] as [Table Name],
Col.[Name] As [Column Name]
From SysObjects Inner Join
(Select [Name],[ID] From SysObjects) As Tab
On Tab.[ID] = Sysobjects.[Parent_Obj]
Inner Join sysconstraints On sysconstraints.Constid = Sysobjects.[ID]
Inner Join SysColumns Col On Col.[ColID] = sysconstraints.[ColID] And Col.[ID] = Tab.[ID]
order by [Tab].[Name]
해결법
-
==============================
1.당신은 (-을 sysobjects 뷰가 사용되지 않으며 피해야한다 당신이 SQL Server 2005의 이상에 인 경우) - 현재 SYS 카탈로그 뷰를 사용해야 여기 카탈로그 뷰에 광범위한 MSDN SQL Server 온라인 설명서를 확인하십시오.
당신은 (-을 sysobjects 뷰가 사용되지 않으며 피해야한다 당신이 SQL Server 2005의 이상에 인 경우) - 현재 SYS 카탈로그 뷰를 사용해야 여기 카탈로그 뷰에 광범위한 MSDN SQL Server 온라인 설명서를 확인하십시오.
당신이에 관심이있을 수있는 꽤 많은 의견이 있습니다 :
그리고 더 많은 -을 체크 아웃!
당신은 조회하고 정보가 필요한하려면 그 전망에 가입하실 수 있습니다 - 예를 이것은 테이블, 열 및 그들에 정의 된 모든 기본 제약 조건을 나열합니다 :
SELECT TableName = t.Name, ColumnName = c.Name, dc.Name, dc.definition FROM sys.tables t INNER JOIN sys.default_constraints dc ON t.object_id = dc.parent_object_id INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND c.column_id = dc.parent_column_id ORDER BY t.Name
-
==============================
2.나는 SQL 서버 2012 년 제약의 정보를 검색하기 위해 다음 쿼리를 사용하고, 완벽하게 작동합니다. 나는 당신을 위해 유용 할 수 있기를 바랍니다.
나는 SQL 서버 2012 년 제약의 정보를 검색하기 위해 다음 쿼리를 사용하고, 완벽하게 작동합니다. 나는 당신을 위해 유용 할 수 있기를 바랍니다.
SELECT tab.name AS [Table] ,tab.id AS [Table Id] ,constr.name AS [Constraint Name] ,constr.xtype AS [Constraint Type] ,CASE constr.xtype WHEN 'PK' THEN 'Primary Key' WHEN 'UQ' THEN 'Unique' ELSE '' END AS [Constraint Name] ,i.index_id AS [Index ID] ,ic.column_id AS [Column ID] ,clmns.name AS [Column Name] ,clmns.max_length AS [Column Max Length] ,clmns.precision AS [Column Precision] ,CASE WHEN clmns.is_nullable = 0 THEN 'NO' ELSE 'YES' END AS [Column Nullable] ,CASE WHEN clmns.is_identity = 0 THEN 'NO' ELSE 'YES' END AS [Column IS IDENTITY] FROM SysObjects AS tab INNER JOIN SysObjects AS constr ON(constr.parent_obj = tab.id AND constr.type = 'K') INNER JOIN sys.indexes AS i ON( (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tab.id) AND i.name = constr.name ) INNER JOIN sys.index_columns AS ic ON (ic.column_id > 0 and (ic.key_ordinal > 0 or ic.partition_ordinal = 0 or ic.is_included_column != 0)) AND (ic.index_id=CAST(i.index_id AS int) AND ic.object_id=i.object_id) INNER JOIN sys.columns AS clmns ON clmns.object_id = ic.object_id and clmns.column_id = ic.column_id WHERE tab.xtype = 'U' ORDER BY tab.name
-
==============================
3.당신은이 쿼리를 얻을 수 있습니다
당신은이 쿼리를 얻을 수 있습니다
고유 제한 조건,
, 제약 조건 값을 기본
외부 키와 표 및 열 참조
그리고 기본 키 제약 조건.
Select C.*, (Select definition From sys.default_constraints Where object_id = C.object_id) As dk_definition, (Select definition From sys.check_constraints Where object_id = C.object_id) As ck_definition, (Select name From sys.objects Where object_id = D.referenced_object_id) As fk_table, (Select name From sys.columns Where column_id = D.parent_column_id And object_id = D.parent_object_id) As fk_col From sys.objects As C Left Join (Select * From sys.foreign_key_columns) As D On D.constraint_object_id = C.object_id Where C.parent_object_id = (Select object_id From sys.objects Where type = 'U' And name = 'Table Name Here');
-
==============================
4.
SELECT [oj].[name] [TableName], [ac].[name] [ColumnName], [dc].[name] [DefaultConstraintName], [dc].[definition] FROM sys.default_constraints [dc], sys.all_objects [oj], sys.all_columns [ac] WHERE ( ([oj].[type] IN ('u')) AND ([oj].[object_id] = [dc].[parent_object_id]) AND ([oj].[object_id] = [ac].[object_id]) AND ([dc].[parent_column_id] = [ac].[column_id]) )
-
==============================
5.나는 그것이 어떤 이유로 받아 들여지지 않았다 그러나 marc_s에서 제공하는 대답을 편집했습니다. 그것은이 쉽게 다른 코드에 붙여 넣을 수 있도록 기본 이름을 스키마를 포함하고 또한 이름, 쉽게 읽기에 대한 SQL 형식을 지정합니다.
나는 그것이 어떤 이유로 받아 들여지지 않았다 그러나 marc_s에서 제공하는 대답을 편집했습니다. 그것은이 쉽게 다른 코드에 붙여 넣을 수 있도록 기본 이름을 스키마를 포함하고 또한 이름, 쉽게 읽기에 대한 SQL 형식을 지정합니다.
SELECT SchemaName = s.Name, TableName = t.Name, ColumnName = c.Name, DefaultName = dc.Name, DefaultDefinition = dc.Definition FROM sys.schemas s JOIN sys.tables t on t.schema_id = s.schema_id JOIN sys.default_constraints dc on dc.parent_object_id = t.object_id JOIN sys.columns c on c.object_id = dc.parent_object_id and c.column_id = dc.parent_column_id ORDER BY s.Name, t.Name, c.name
-
==============================
6.여기에 외부 키를 얻을 수있는 스크립트입니다 :
여기에 외부 키를 얻을 수있는 스크립트입니다 :
SELECT TOP(150) t.[name] AS [Table], cols.[name] AS [Column], t2.[name] AS [Referenced Table], c2.[name] AS [Referenced Column], constr.[name] AS [Constraint] FROM sys.tables t INNER JOIN sys.foreign_keys constr ON constr.parent_object_id = t.object_id INNER JOIN sys.tables t2 ON t2.object_id = constr.referenced_object_id INNER JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = constr.object_id INNER JOIN sys.columns cols ON cols.object_id = fkc.parent_object_id AND cols.column_id = fkc.parent_column_id INNER JOIN sys.columns c2 ON c2.object_id = fkc.referenced_object_id AND c2.column_id = fkc.referenced_column_id --WHERE t.[name] IN ('?', '?', ...) ORDER BY t.[Name], cols.[name]
from https://stackoverflow.com/questions/14229277/sql-server-2008-get-table-constraints by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL - 전화는 각 레코드에 대해 저장 프로 시저 (0) | 2020.05.20 |
---|---|
[SQL] 타임 스탬프에서 폐기 밀리 초 부분 (0) | 2020.05.20 |
[SQL] 임시 테이블에서 필드 이름을 검색하는 방법 (SQL 서버 2008) (0) | 2020.05.20 |
[SQL] SQL의 데이터베이스 테이블에서 모든하지만 상위 N 삭제 (0) | 2020.05.20 |
[SQL] 하나 개의 컬럼에 두 개의 열을 결합 MYSQL (0) | 2020.05.20 |