-- MSSQL

도메인 무결성 체크

어린왕자악꿍 2010. 3. 22. 18:10

SELECT c.name   [Column Name]

           ,t.name   [Column Type]

           ,c.length[Length]

           ,c.prec   [Precision]

           ,c.scale  [Scale]

           ,o.name   [Table Name]

FROM     SYSCOLUMNSc INNER JOIN SYSOBJECTSo ONc.id=o.id

            INNER JOIN SYSTYPESt ONc.xtype=t.xtype

WHERE  o.xtype='U'

AND       c.name IN

(

       SELECTx.name

       FROM

       (

             SELECT   name,xtype,length,prec,scale

             FROM     SYSCOLUMNS

             WHERE    name IN 
            
( 
                 SELECT   SYSCOLUMNS.name

                 FROM     SYSCOLUMNSjoin SYSOBJECTSonSYSCOLUMNS.id=SYSOBJECTS.id

                 WHERE    SYSCOLUMNS.xtype='U'

                 GROUP BY SYSCOLUMNS.name

                 HAVING   COUNT(SYSCOLUMNS.name)>
             )

             GROUP BY name,xtype,length,prec,scale

       )x

       GROUP BY x.name

       HAVING   count(x.name)> 1

)

ORDER BY c.name,o.name