我的表格中有一个名为MealType
(VARCHAR
)的列,CHECK
{"Veg", "NonVeg", "Vegan"}
约束
那将照顾插入。
我想显示这些选项以供选择,但我无法找出SQL查询以找出表格中特定列的约束。
从第一眼看到MS SQL服务器中的系统表,我似乎需要使用MS SQL的API来获取信息。我本来希望SQL查询能够得到它。
答案 0 :(得分:22)
最简单快捷的方法是使用:
sp_help 'TableName'
答案 1 :(得分:14)
此查询应显示表中的所有约束:
select chk.definition
from sys.check_constraints chk
inner join sys.columns col
on chk.parent_object_id = col.object_id
inner join sys.tables st
on chk.parent_object_id = st.object_id
where
st.name = 'Tablename'
and col.column_id = chk.parent_column_id
可以用以下代码替换select语句:
select substring(chk.Definition,2,3),substring(chk.Definition,9,6),substring(chk.Definition,20,5)
答案 2 :(得分:1)
您可以使用
sp_helpconstraint 'tableName', 'nomsg'
获取表的所有约束。
“ sp_help”返回更多信息。
答案 3 :(得分:0)
SELECT obj_table.NAME AS 'table',
columns.NAME AS 'column',
obj_Constraint.NAME AS 'constraint',
obj_Constraint.type AS 'type'
FROM sys.objects obj_table
JOIN sys.objects obj_Constraint
ON obj_table.object_id = obj_Constraint.parent_object_id
JOIN sys.sysconstraints constraints
ON constraints.constid = obj_Constraint.object_id
JOIN sys.columns columns
ON columns.object_id = obj_table.object_id
AND columns.column_id = constraints.colid
WHERE obj_table.NAME='table_name'
ORDER BY 'table'