2013-09-04 11 views
7

mam kolumnę o nazwie MealType (VARCHAR) w moim stole z CHECK ograniczenie dla {"Veg", "NonVeg", "Vegan"}Jak uzyskać ograniczeń na kolumnie tabeli SQL

że będziemy dbać o wstawienie.

Chciałbym wyświetlić te opcje do wyboru, ale nie mogłem dowiedzieć się kwerendy SQL, aby dowiedzieć się ograniczenia konkretnej kolumny w tabeli.

Już na pierwszy rzut oka na tabele systemowe na serwerze MS SQL wydaje mi się, że potrzebuję API MS SQL, aby uzyskać informacje. Miałem nadzieję, że otrzymam zapytanie SQL.

+4

Trzymaj ograniczenia w Tabeli MealType, w ten sposób, jeśli jest więcej opcji niż tylko Veg, Notveg, możesz łatwo rozwinąć. – Elias

+0

Jakiej bazy danych używasz? Ograniczenia są prawdopodobnie w katalogu, jeśli tego wymagasz. – dcaswell

+1

Którego DBMS używasz? –

Odpowiedz

9

To zapytanie powinno pokazać wszystkie ograniczenia na stole:

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 

może zastąpić select z tym:

select substring(chk.Definition,2,3),substring(chk.Definition,9,6),substring(chk.Definition,20,5) 
+0

Wybacz moją niewiedzę, ale co tu jest? – Raja

+0

Chk jest aliasem, którego używam do sys.check_constraints, czy potrzebujesz oddzielnych ograniczeń? – orgtigger

+0

Tak. Dziękuję za pomoc - nigdy wcześniej nie używałam SQL. – Raja

12

Najprostszym i najszybszym sposobem jest użycie:

sp_help 'TableName' 
+0

To jest okropne rozwiązanie do pobierania informacji programowo. –

+0

To dobrze, autor nie chciał ich programowo; po prostu chcieli mieć listę ograniczeń. Jeśli zmieniasz DB lub naprawiasz problem, sp_help jest zdecydowanie najłatwiejszy. – DaBlue

Powiązane problemy