我的表中有一个名为MealType(VARCHAR)的列,带有CHECK约束{"Veg", "NonVeg", "Vegan"}
这将照顾插入.
我想显示这些选项供选择,但我无法找出SQL查询来找出表中特定列的约束.
从第一眼看到MS SQL服务器中的系统表,我似乎需要使用MS SQL的API来获取信息.我希望SQL查询本身能够得到它.
DaB*_*lue 26
最简单快捷的方法是使用:
sp_help 'TableName'
Run Code Online (Sandbox Code Playgroud)
org*_*ger 15
此查询应显示表上的所有约束:
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
Run Code Online (Sandbox Code Playgroud)
可以用这个替换select语句:
select substring(chk.Definition,2,3),substring(chk.Definition,9,6),substring(chk.Definition,20,5)
Run Code Online (Sandbox Code Playgroud)
Rav*_*bad 15
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'
Run Code Online (Sandbox Code Playgroud)
小智 9
您可以使用
sp_helpconstraint 'tableName', 'nomsg'
Run Code Online (Sandbox Code Playgroud)
获取表的所有约束。
“sp_help”返回更多信息。