Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да намеря ограничение по подразбиране с помощта на INFORMATION_SCHEMA?

Доколкото разбирам, ограниченията на стойността по подразбиране не са част от стандарта ISO, така че не се показват в INFORMATION_SCHEMA. INFORMATION_SCHEMA изглежда като най-добрият избор за този вид задача, тъй като е междуплатформена, но ако информацията не е налична, трябва да използвате изгледите на каталога на обекти (sys.*) вместо изгледите на системни таблици, които са остарели в SQL Server 2005 г. и по-късно.

По-долу е почти същото като отговора на @user186476. Връща името на ограничението на стойността по подразбиране за дадена колона. (За потребители, които не използват SQL Server, имате нужда от името по подразбиране, за да го пуснете и ако не посочите сами ограничението по подразбиране, SQL Server създава някакво лудо име като „DF_TableN_Colum_95AFE4B5“. За да улесни промяната вашата схема в бъдеще, винаги изрично посочвайте вашите ограничения!)

-- 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'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създам псевдоним на таблица в MySQL

  2. Msg 203, ниво 16, състояние 2, не е валиден идентификатор

  3. Използване на NOLOCK Hint в EF4?

  4. Настройката на SMO ConnectionContext.StatementTimeout се игнорира

  5. Таблици на SQL Server:каква е разликата между @, # и ##?