2011-07-30 9 views
6

Tengo una tabla y deseo colocar o establecer el valor predeterminado de una de las columnas. Yo uso por debajo de secuencias de comandos:Ayuda para resolver el valor predeterminado de columna caída de un error de tabla

ALTER TABLE AccAccountGroup ALTER COLUMN Name DROP DEFAULT 

ALTER TABLE AccAccountGroup ALTER COLUMN Name SET DEFAULT 'default value' 

cuando corro las secuencias de comandos, a continuación errores aparece:

Incorrect syntax near the keyword 'DEFAULT'. => para la escritura gota

Incorrect syntax near the keyword 'SET'. => para la escritura de complemento

estos scripts son de msdn.

¿Cuál es el problema? Yo uso SQL Server 2008 R2.

Respuesta

6

Creo que su referencia es para SQL Server Compact Edition. Use this one en su lugar.

Debe usar la sintaxis CONSTRAINT y debe usar el nombre predeterminado. Aunque no asignó un nombre (y sugiero que lo haga en el futuro, ya que es una buena práctica), SQL Server asignará uno, que puede encontrar usando EXEC sp_help AccAccountGroup.

Pruebe estas sintaxis:

ALTER TABLE AccAccountGroup 
DROP CONSTRAINT <default name> 

ALTER TABLE AccAccountGroup 
ADD CONSTRAINT DF_AccAccountGroup_name DEFAULT 'default value' FOR name 
+0

no es la sintaxis "ALTER TABLE AccAccountGroup DROP CONSTRAINT ' – jose

+0

No estoy seguro como que obtuve perdidas durante tanto tiempo, pero se corrigió y se prueba ahora gracias?. –

5

El enlace que proporcionó se refiere solo a SQL Server Compact Edition, no al servidor SQL 'completo'. Las instrucciones anteriores solo son válidas en SQL Server Compact Edition.

En el servidor SQL 'completo', los valores predeterminados para las columnas se implementan usando restricciones. Puede añadir una restricción predeterminada a una mesa usando algo como

ALTER TABLE AccAccountGroup ADD CONSTRAINT AccAcctGrp_Name_Def DEFAULT 'default value' FOR name; 

y soltarlo utilizando

ALTER TABLE AccAccountGroup DROP CONSTRAINT AccAcctGrp_Name_Def; 

Tenga en cuenta que es necesario proporcionar el nombre de la restricción cuando se te cae. Si no conoce el nombre de la restricción, la siguiente consulta la buscará. Cambiar el nombre de esquema dbo, y también los nombres de tablas y columnas, si/cuando sea necesario:

SELECT object_name(default_object_id) 
    FROM sys.columns 
WHERE object_id = object_id('dbo.AccAccountGroup') 
    AND name = 'Name'; 

Una vez que tenga el nombre de la restricción, se puede caer. (Agradecimiento: esta consulta fue tomada de un comentario publicado here.)

Cuestiones relacionadas