在SQLServer中的约束如:主键约束、外键约束、check约束、default约束分别可以通过方法getPrimaryKey()、getCrossReferences()、以及系统表sysconstraints、syscomments、sysobjects得到他们的详细信息(比如default约束可以得到约束名,所在的表,约束所在的列,约束内容等)
但对于unique约束我不知道该如何提取它的详细信息。
在系统表sysconstraints中,列colid的说明是:在其上定义约束的列 ID,如果是表约束则为 0。 对于default约束,check约束这一列都指明了约束作用的列号,但对于unique约束这一列的值却是0!就是说unique约束是个表约束!?一个表可以拥有多个unique约束,他们可以分别作用于不同的列,如果unique约束是个表约束的话,我该怎么才能知道它作用的列名呢??(不知道有没有JDBC方法可以想提取外键约束一样直接提取出unique约束的详细信息??)
谢谢!!!
但对于unique约束我不知道该如何提取它的详细信息。
在系统表sysconstraints中,列colid的说明是:在其上定义约束的列 ID,如果是表约束则为 0。 对于default约束,check约束这一列都指明了约束作用的列号,但对于unique约束这一列的值却是0!就是说unique约束是个表约束!?一个表可以拥有多个unique约束,他们可以分别作用于不同的列,如果unique约束是个表约束的话,我该怎么才能知道它作用的列名呢??(不知道有没有JDBC方法可以想提取外键约束一样直接提取出unique约束的详细信息??)
谢谢!!!
因为sysconstraints中的id为Table的id
ColName = C.name, Colid = C.colid
FROM sysindexes IX, sysindexkeys IXK, syscolumns C, sysobjects OU, sysobjects O
WHERE IX.indid NOT IN(0, 255)
AND IX.id = IXK.id
AND IX.indid = IXK.indid
AND IX.id = c.id
AND IXK.colid = C.colid
AND OU.parent_obj = IX.id
AND OU.xtype = 'UQ'
AND OU.name = IX.name
AND O.xtype = 'U'
AND O.id = IX.id
ORDER BY tbname, UNIQUEName