Jak rozumiem, ograniczenia wartości domyślne nie są częścią Standard ISO, więc nie pojawiają się w INFORMATION_SCHEMA. INFORMATION_SCHEMA wydaje się najlepszym wyborem dla tego rodzaju zadania, ponieważ jest to platforma wieloplatformowa, ale jeśli informacja nie jest dostępna, należy użyć widoków katalogu obiektów (sys. *) Zamiast widoków tabel systemowych, które są nieaktualne w SQL Server 2005 i później.
Poniżej jest prawie taka sama jak odpowiedź @ user186476. Zwraca nazwę ograniczenia wartości domyślnej dla danej kolumny. (W przypadku użytkowników innych niż SQL Server potrzebna jest nazwa domyślna w celu jej upuszczenia, a jeśli nie nazwiesz domyślnego ograniczenia samodzielnie, SQL Server tworzy szaloną nazwę, taką jak "DF_TableN_Colum_95AFE4B5".Aby łatwiej zmienić schemat w przyszłości, zawsze wyraźnie wymienić 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'
Uwaga: możliwe jest posiadanie tej samej nazwy tabeli w różnych schematach, więc powinieneś także dołączyć do tabeli sys.schemas. –
@DanielJamesBryars sys.schemas zostały teraz dodane do zapytania. –
Proszę zobaczyć [moja odpowiedź] (http://stackoverflow.com/a/32750390/57611), która jest krótka i słodka, działa we wszystkich wersjach SQL Server, nie ma żadnych tabel 'sys' i jest łatwa do zapamiętania . – ErikE