#sql #sql-server #sql-server-2008 #tsql
#sql #sql-сервер #sql-server-2008 #tsql
Вопрос:
Я пытаюсь получить информацию об ограничениях по умолчанию для данной таблицы. Я написал что-то вроде этого:
SELECT c.name ,
col.name
FROM Rem.sys.default_constraints c
INNER JOIN Rem.sys.columns col ON col.default_object_id = c.object_id
INNER JOIN Rem.sys.objects o ON o.object_id = c.parent_object_id
INNER JOIN Rem.sys.schemas s ON s.schema_id = o.schema_id
WHERE s.name = 'dbo'
AND o.name = 'Desk_Hist'
Но это не возвращает мне значение по умолчанию. Итак, я попробовал другой способ, и запрос:
SELECT *
FROM Rem.information_schema.columns columns
WHERE columns.table_catalog = 'Rem'
AND columns.table_schema = 'dbo'
AND columns.table_name = 'Desk_Hist'
AND COLUMN_DEFAULT IS NOT NULL
Но это ничего мне не возвращает.
Кто-нибудь может мне помочь в этом?
Ответ №1:
Значение по умолчанию находится в столбце «определение», попробуйте выполнить запрос без указания where:
SELECT c.name ,
col.name,
c.definition
FROM Rem.sys.default_constraints c
INNER JOIN Rem.sys.columns col ON col.default_object_id = c.object_id
INNER JOIN Rem.sys.objects o ON o.object_id = c.parent_object_id
INNER JOIN Rem.sys.schemas s ON s.schema_id = o.schema_id
Комментарии:
1. van c.определение возвращает мне значение Null
Ответ №2:
Ваш первый запрос должен сработать, но вы включаете только имя ограничения, ничего больше, из таблицы ограничений ( c.name
).
Попробуйте включить c.definition
в свой список выбора