CREATE DEFAULT (Transact-SQL)

Crea un objeto denominado valor predeterminado. Cuando se enlaza a un tipo de datos de columna o de alias, un valor predeterminado especifica un valor que debe insertarse en la columna a la que está enlazada el objeto (o en todas las columnas, en el caso de un tipo de datos de alias) si no se proporciona explícitamente un valor durante la inserción.

ms173565.note(es-es,SQL.90).gifImportante:
CREATE DEFAULT se quitará en una versión futura de Microsoft SQL Server. Evite el uso de CREATE DEFAULT en nuevos trabajos de desarrollo y planee modificar las aplicaciones que actualmente lo utilizan. En su lugar, use definiciones predeterminadas creadas con la palabra clave DEFAULT de ALTER TABLE o CREATE TABLE. Para obtener más información, vea Crear y modificar definiciones DEFAULT.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

CREATE DEFAULT [ schema_name . ] default_name 
AS constant_expression [ ; ]

Argumentos

  • schema_name
    Es el nombre del esquema al que pertenece el valor predeterminado.
  • default_name
    Es el nombre del valor predeterminado. Los nombres predeterminados deben cumplir las reglas de los identificadores. Especificar el nombre del propietario del valor predeterminado es opcional.
  • constant_expression
    Es una expresión que contiene sólo valores constantes (no puede contener el nombre de ninguna columna u otros objetos de base de datos). Se puede utilizar cualquier constante, función integrada o expresión matemática, excepto las que contienen tipos de datos de alias. No se pueden utilizar funciones definidas por el usuario. Incluya las constantes de caracteres y fechas entre comillas simples ('); las constantes de moneda, de enteros y de coma flotante no necesitan comillas. Los datos binarios deben precederse de 0x y los datos de moneda deben precederse de un signo de dólar ($). El valor predeterminado debe ser compatible con el tipo de datos de la columna.

Notas

El nombre de un valor predeterminado sólo se puede crear en la base de datos actual. En una base de datos, los nombres predeterminados deben ser únicos para cada esquema. Después de crear un valor predeterminado, utilice sp_bindefault para enlazarlo a una columna o a un tipo de datos de alias.

Si el valor predeterminado no es compatible con la columna a la que está enlazado, SQL Server genera un mensaje de error al intentar insertar el valor predeterminado. Por ejemplo, N/A no se puede utilizar como valor predeterminado para una columna numeric.

Si el valor predeterminado es demasiado largo para la columna a la que está enlazado, el valor se trunca.

Las instrucciones CREATE DEFAULT no se pueden combinar con otras instrucciones Transact-SQL en el mismo lote.

Antes de crear un nuevo valor predeterminado con el mismo nombre, es necesario quitar el anterior y quitar el enlace del valor predeterminado; para ello, ejecute sp_unbindefault antes de quitarlo.

Si una columna tiene un valor predeterminado y una regla asociados, el valor predeterminado no debe infringir la regla. No se insertará nunca un valor predeterminado que esté en conflicto con una regla y SQL Server genera un mensaje de error cada vez que se intente insertar el valor predeterminado.

Cuando se enlaza a una columna, un valor predeterminado se inserta cuando:

  • No se ha insertado un valor explícitamente.
  • Se utilizan las palabras clave DEFAULT VALUES o DEFAULT con INSERT para insertar valores predeterminados.

Si se especifica NOT NULL al crear una columna y no se crea un valor predeterminado para ésta, se generará un mensaje de error cada vez que el usuario no cree una entrada en esa columna. En la tabla siguiente se ilustra la relación entre la existencia de un valor predeterminado y la definición de una columna como NULL o NOT NULL. Las entradas de la tabla muestran el resultado.

Definición de columna Sin entrada, sin valor predeterminado Sin entrada, valor predeterminado Entrada NULL, sin valor predeterminado Entrada NULL, valor predeterminado

NULL

NULL

predeterminado

NULL

NULL

NOT NULL

Error

predeterminado

error

error

[!NOTA] El hecho de que SQL Server interprete una cadena vacía como un espacio o como una cadena vacía verdadera se controla mediante el valor sp_dbcmptlevel . Si el nivel de compatibilidad es menor o igual que 65, SQL Server interpreta las cadenas vacías como espacios. Si el nivel de compatibilidad es igual a 70, SQL Server interpreta las cadenas vacías como tales. Para obtener más información, vea sp_dbcmptlevel (Transact-SQL).

Para cambiar el nombre de un valor predeterminado, utilice sp_rename. Para obtener un informe sobre un valor predeterminado, utilice sp_help.

Permisos

Para ejecutar CREATE DEFAULT, como mínimo, un usuario debe tener permiso CREATE DEFAULT en la base de datos actual y permiso ALTER en el esquema donde se va a crear el valor predeterminado.

Ejemplos

A. Crear un valor predeterminado de caracteres de tipo sencillo

En el siguiente ejemplo se crea un valor predeterminado de caracteres denominado unknown.

USE AdventureWorks;
GO
CREATE DEFAULT phonedflt AS 'unknown';

B. Enlazar un valor predeterminado

En el siguiente ejemplo se enlaza el valor predeterminado creado en el ejemplo A. El valor predeterminado sólo entra en efecto si no hay ninguna entrada especificada en la columna Phone de la tabla Contact. Tenga en cuenta que omitir una entrada no es lo mismo que incluir NULL explícitamente en una instrucción INSERT.

Como no existe un valor predeterminado llamado phonedflt, se producirá un error en la siguiente instrucción Transact-SQL. Este ejemplo sólo tiene propósitos ilustrativos.

USE AdventureWorks;
GO
sp_bindefault 'phonedflt', 'Person.Contact.Phone';

Vea también

Referencia

ALTER TABLE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL)
Expresiones (Transact-SQL)
INSERT (Transact-SQL)
sp_bindefault (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindefault (Transact-SQL)

Otros recursos

Lotes
Usar identificadores como nombres de objeto

Ayuda e información

Obtener ayuda sobre SQL Server 2005