Как получить ограничения на столбец таблицы SQL
У меня есть столбец с именем MealType
(VARCHAR
) в моей таблице с ограничением CHECK
для {"Veg", "NonVeg", "Vegan"}
Это позаботится о вставке.
Я хотел бы отобразить эти параметры для выбора, но я не смог выяснить SQL-запрос, чтобы узнать ограничения определенного столбца в таблице.
С первого взгляда на системные таблицы на сервере MS SQL, похоже, мне нужно будет использовать MS SQL API для получения информации. Я надеялся на сам запрос SQL, чтобы получить его.
Ответы
Ответ 1
Этот запрос должен показать вам все ограничения в таблице:
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
Самый простой и быстрый способ - использовать:
sp_help 'TableName'
Ответ 3
Ты можешь использовать
sp_helpconstraint 'tableName', 'nomsg'
чтобы получить все ограничения для таблицы.
"sp_help" возвращает гораздо больше информации.
Ответ 4
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'