2010-07-07 7 views
5

Есть ли сценарий TSQL, который позволит мне увидеть содержимое ограничения. Я нашел вопрос относительно Oracle, но мне нужен скрипт TSQL.Как увидеть содержимое контрольной суммы

How to see contents of Check Constraint on Oracle

Я знаю sys.check_constraints, однако, «определение» возвращается нуль для всех объектов.

Select * from sys.check_constraints 

ответ

12

Другой способ

для проверочных ограничений

select definition,name 
from sys.check_constraints 

для ограничений по умолчанию

select definition,name 
from sys.default_constraints 

и еще один способ

SELECT object_definition(OBJECT_ID(CONSTRAINT_NAME)),* 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
where CONSTRAINT_TYPE <> 'PRIMARY KEY' 
+2

Возможно, возникнет проблема с разрешением, если ваш логин не имеет достаточных привилегий, вы его не увидите – SQLMenace

+0

Это была проблема с разрешением. К сожалению, я буду испытывать ошибку в DBA каждый раз, когда сталкиваюсь с ошибками ограничения. – 2010-07-07 15:31:45

+0

Примечание: *** sys.check_constraints *** для проверки ограничений на столбцы, недействительные для ограничений _check для таблиц_. Например: 'CONSTRAINT CK_NumeroUsadas_NumeroTotal CHECK (NumeroUsadas <= NumbereroTotal AND NumeroTotal> = 0),' – Kiquenet

2
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
+0

Примечание: 'Select constraint_name, CHECK_CLAUSE ОТ INFORMATION_SCHEMA.CHECK_CONSTRAINTS' для содержимого поиска в ограничении и 'SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'CHECK'' для получения все ограничения (*** CHECK ***) – Kiquenet

0

Чтобы иметь какие-либо ограничения проверки, вам понадобятся объекты этого типа.

select * 
from sys.objects 
where sys.objects.type = 'C' 

check_constraints

1

sys.default_constraints для ограничений по умолчанию на столбах

sys.check_constraints для проверки ограничений на столбах

sys.key_constraints для ключевых ограничений (например, первичные ключи)

sys.foreign_keys для внешних ключей

sys.check_constraints для проверки ограничений на столбах, не действительны для проверочных ограничений таблиц. Например: CONSTRAINT CK_NumeroUsadas_NumeroTotal CHECK (NumeroUsadas <= NumeroTotal AND NumeroTotal >= 0),

Поиск текста внутри ограничение:

1.) SELECT CONSTRAINT_NAME,CHECK_CLAUSE FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS WHERE CHECK_CLAUSE like '%NumeroTotal%' or CHECK_CLAUSE LIKE '%NumeroUsadas%'

2.) SELECT object_definition(OBJECT_ID(CONSTRAINT_NAME)),* FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'CHECK' AND object_definition(OBJECT_ID(CONSTRAINT_NAME)) like '%NumeroTotal%' or object_definition(OBJECT_ID(CONSTRAINT_NAME)) LIKE '%NumeroUsadas%'

Смежные вопросы