Jak rozumiem, ograniczenia wartości domyślnych nie są częścią normy ISO, więc nie pojawiają się w INFORMATION_SCHEMA. INFORMACJA_SCHEMA wydaje się najlepszym wyborem dla tego rodzaju zadań, ponieważ jest to wieloplatformowe, ale jeśli informacje nie są dostępne, należy użyć widoków katalogu obiektów (sys. *) Zamiast widoków tabeli systemowej, które są przestarzałe w SQL Server 2005 i później.
Poniżej znajduje się prawie to samo, co odpowiedź @ user186476. Zwraca nazwę ograniczenia wartości domyślnej dla danej kolumny. (W przypadku użytkowników innych niż SQL Server, potrzebujesz nazwy domyślnej, aby ją usunąć, a jeśli nie nazwiesz domyślnego ograniczenia samodzielnie, SQL Server utworzy szaloną nazwę, taką jak „DF_TableN_Colum_95AFE4B5”. Aby ułatwić zmianę swój schemat w przyszłości, zawsze jawnie nazwij swoje ograniczenia!)
-- returns name of a column's default value constraint
SELECT
default_constraints.name
FROM
sys.all_columns
INNER JOIN
sys.tables
ON all_columns.object_id = tables.object_id
INNER JOIN
sys.schemas
ON tables.schema_id = schemas.schema_id
INNER JOIN
sys.default_constraints
ON all_columns.default_object_id = default_constraints.object_id
WHERE
schemas.name = 'dbo'
AND tables.name = 'tablename'
AND all_columns.name = 'columnname'
sys
tabel i jest łatwa do zapamiętania.Aby jeszcze bardziej zawęzić wyniki, można skorzystać z następujących opcji, określając nazwę tabeli i nazwę kolumny, z którą koreluje domyślne ograniczenie:
źródło
Wydaje się, że w
Information_Schema
widokach nie ma nazw domyślnych ograniczeń .użyj,
SELECT * FROM sysobjects WHERE xtype = 'D' AND name = @name
aby znaleźć domyślne ograniczenie według nazwyźródło
Poniższy skrypt zawiera listę wszystkich domyślnych ograniczeń i wartości domyślnych dla tabel użytkowników w bazie danych, w której jest uruchamiany:
źródło
Jeśli chcesz uzyskać ograniczenie według nazw kolumn lub tabel albo chcesz uzyskać wszystkie ograniczenia w bazie danych, poszukaj innych odpowiedzi. Jeśli jednak szukasz dokładnie tego, o co chodzi w pytaniu, a mianowicie, aby „sprawdzić, czy dane ograniczenie domyślne istnieje ... pod nazwą ograniczenia” , istnieje znacznie łatwiejszy sposób.
Oto odpowiedź na przyszłość, która w ogóle nie korzysta z tabel
sysobjects
ani innychsys
tabel:źródło
źródło
Czy kolumna COLUMN_DEFAULT w sekcji INFORMATION_SCHEMA.COLUMNS jest tym, czego szukasz?
źródło
źródło
Nekromancja.
Jeśli chcesz tylko sprawdzić, czy istnieje ograniczenie
domyślne ( ograniczenia domyślne mogą mieć inną nazwę w źle zarządzanych bazach danych),
użyj INFORMATION_SCHEMA.COLUMNS (column_default):
Jeśli chcesz sprawdzić tylko nazwę ograniczenia:
I wreszcie, możesz po prostu utworzyć widok o nazwie
INFORMATION_SCHEMA.DEFAULT_CONSTRAINTS:
źródło
Wydaje mi się, że nie jest to w pliku INFORMATION_SCHEMA - prawdopodobnie będziesz musiał użyć sysobjects lub powiązanych przestarzałych tabel / widoków.
Można by pomyśleć, że będzie taki typ w INFORMATION_SCHEMA.TABLE_CONSTRAINTS, ale ja go nie widzę.
źródło
Prawdopodobnie dlatego, że w niektórych innych bazach danych SQL „domyślne ograniczenie” nie jest tak naprawdę ograniczeniem, nie znajdziesz jego nazwy w „INFORMATION_SCHEMA.TABLE_CONSTRAINTS”, więc najlepszym rozwiązaniem jest „INFORMATION_SCHEMA.COLUMNS”, jak inni już wspominali.
(Tutaj SQLServer-ignoramus)
Jedynym powodem, dla którego przychodzi mi do głowy, kiedy musisz znać nazwę „domyślnego ograniczenia”, jest to, że SQLServer nie obsługuje
"ALTER TABLE xxx ALTER COLUMN yyy SET DEFAULT..."
polecenia. Ale wtedy jesteś już w niestandardowej strefie i musisz użyć specyficznych dla produktu sposobów, aby uzyskać to, czego potrzebujesz.źródło
Co powiesz na użycie kombinacji CHECK_CONSTRAINTS i CONSTRAINT_COLUMN_USAGE:
źródło
Używam następującego skryptu, aby odzyskać wszystkie domyślne (sp_binddefaults) i wszystkie domyślne ograniczenia z następującymi skryptami:
źródło
Widok katalogu obiektów : sys.default_constraints
Widoki schematu informacji
INFORMATION_SCHEMA
są zgodne z ANSI, ale domyślne ograniczenia nie są częścią normy ISO. Microsoft SQL Server udostępnia widoki katalogu systemowego do uzyskiwania informacji o metadanych obiektów SQL Server.sys.default_constraints
widok katalogu systemowego używany do uzyskiwania informacji o domyślnych ograniczeniach.źródło