既存の資料との突合せであったため、テーブルと資料を確認しながら作業をしていました。
SQLServerなので、1つづつSQL Server Management Studioで見ていけばわかるのですが、だんだん面倒になってきました。
また、ツールなどのインストールに制限があったため、キーおよびキー項目の制約を調査するSQLを作ってみました。コードはこんな感じ。
DECLARE @TABLE_NAME varchar(128);
SET @TABLE_NAME = 'tblTEST3';
SELECT
ST.name as TABLE_NAME
,SI.name as INDEX_NAME
,SC.name as COLMN_NAME
,SI.type_desc as INDEX_TYPE
,CASE SI.is_unique WHEN 1 THEN 'UNIQ' ELSE '' END as UNIQ
,CASE SC.is_nullable WHEN 1 THEN '' ELSE 'NON NULL' END as NON_NULL
--,SI.is_unique
--,SC.is_nullable
--,SC.*
--,SIC.*
FROM SYS.TABLES ST
INNER JOIN SYS.INDEXES SI on ST.object_id= SI.object_id
INNER JOIN SYS.INDEX_COLUMNS SIC on SI.object_id= SIC.object_id AND SI.index_id= SIC.index_id
INNER JOIN SYS.COLUMNS SC ON SC.object_id= SI.object_id AND SC.column_id=SIC.column_id
WHERE ST.name = @TABLE_NAME
SET @TABLE_NAME = 'tblTEST3';
SELECT
ST.name as TABLE_NAME
,SI.name as INDEX_NAME
,SC.name as COLMN_NAME
,SI.type_desc as INDEX_TYPE
,CASE SI.is_unique WHEN 1 THEN 'UNIQ' ELSE '' END as UNIQ
,CASE SC.is_nullable WHEN 1 THEN '' ELSE 'NON NULL' END as NON_NULL
--,SI.is_unique
--,SC.is_nullable
--,SC.*
--,SIC.*
FROM SYS.TABLES ST
INNER JOIN SYS.INDEXES SI on ST.object_id= SI.object_id
INNER JOIN SYS.INDEX_COLUMNS SIC on SI.object_id= SIC.object_id AND SI.index_id= SIC.index_id
INNER JOIN SYS.COLUMNS SC ON SC.object_id= SI.object_id AND SC.column_id=SIC.column_id
WHERE ST.name = @TABLE_NAME
27 件のコメント:
コメントを投稿