Discussion:
Cambiar valor por defecto de un datetime
(demasiado antiguo para responder)
Jesus
2006-05-09 09:27:02 UTC
Permalink
Hola a todos:

Tengo una tabla con un campo datetime de valor por defecto ' ' y lo quiero
modificar a getdate(). Lo intento con esta instruccion y me siempre el mismo
error de sintaxis incorrecta.
alter table mi_tabla alter column campo default getdate()

¿Q es lo q está mal?

Muchas gracias por adelantado...
Rubén Vigón
2006-05-09 11:25:24 UTC
Permalink
Hola Jesús,

Según los «Libros en pantalla» de SQL Server 2000:

[...] Para modificar una definición DEFAULT mediante Transact-SQL o SQL-DMO, antes deberá eliminar la definición DEFAULT existente y, a continuación, volver a crearla con la nueva definición

Es decir, prueba con:

ALTER TABLE mitabla ALTER COLUMN micolumna DROP DEFAULT

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Jesus
2006-05-09 11:46:01 UTC
Permalink
Hola Rubén:

No consigo q funcione, me sigue dando el mismo error
He probado a crear un nuevo campo datetime y tampoco...

ALTER TABLE tabla add campo_nuevo datetime DEFAULT (' ')
Lo crea correctamente pero...

ALTER TABLE tabla ALTER COLUMN campo_nuevo DROP DEFAULT
Y me da el error...
Servidor: mensaje 156, nivel 15, estado 1, línea 1
Incorrect syntax near the keyword 'DEFAULT'.
Alejandro Mesa
2006-05-09 12:47:02 UTC
Permalink
Jesus,

Ejemplo:

create table dbo.t1 (
c1 datetime null constraint df_t1_c1 default('')
)
go

insert into t1 default values
go

select * from dbo.t1
go

alter table dbo.t1
drop constraint df_t1_c1
go

insert into t1 default values
go

select * from dbo.t1
go

alter table dbo.t1
add constraint df_t1_c1 default (getdate()) for c1
go

insert into t1 default values
go

select * from dbo.t1
go

drop table dbo.t1
go

Si al crear la tabla, no especificastes explicitamente el nombre de la
restriccion "default", entonces debes buscar el nombre de la restriccion
usando sp_help, sp_helpconstraint o indagando en la tabla de sistema
sysconstraints, eliminarla y luego adicionar la que deseas.

declare @sql nvarchar(4000)
declare @cn sysname

select
@cn = object_name(constid)
from
sysconstraints
where
[id] = object_id('dbo.t1')
and col_name([id], colid) = 'c1'
and objectproperty(constid, 'IsDefaultCnst') = 1

if not (@cn is null)
begin
set @sql = N'alter table dbo.t1 drop constraint [' + @cn + N']'
exec sp_executesql @sql
end
go


AMB
Post by Jesus
No consigo q funcione, me sigue dando el mismo error
He probado a crear un nuevo campo datetime y tampoco...
ALTER TABLE tabla add campo_nuevo datetime DEFAULT (' ')
Lo crea correctamente pero...
ALTER TABLE tabla ALTER COLUMN campo_nuevo DROP DEFAULT
Y me da el error...
Servidor: mensaje 156, nivel 15, estado 1, línea 1
Incorrect syntax near the keyword 'DEFAULT'.
Jesus
2006-05-09 16:13:03 UTC
Permalink
Muchas gracias ya he podido...

Un saludo...
Post by Alejandro Mesa
Jesus,
create table dbo.t1 (
c1 datetime null constraint df_t1_c1 default('')
)
go
insert into t1 default values
go
select * from dbo.t1
go
alter table dbo.t1
drop constraint df_t1_c1
go
insert into t1 default values
go
select * from dbo.t1
go
alter table dbo.t1
add constraint df_t1_c1 default (getdate()) for c1
go
insert into t1 default values
go
select * from dbo.t1
go
drop table dbo.t1
go
Si al crear la tabla, no especificastes explicitamente el nombre de la
restriccion "default", entonces debes buscar el nombre de la restriccion
usando sp_help, sp_helpconstraint o indagando en la tabla de sistema
sysconstraints, eliminarla y luego adicionar la que deseas.
select
@cn = object_name(constid)
from
sysconstraints
where
[id] = object_id('dbo.t1')
and col_name([id], colid) = 'c1'
and objectproperty(constid, 'IsDefaultCnst') = 1
begin
end
go
AMB
Post by Jesus
No consigo q funcione, me sigue dando el mismo error
He probado a crear un nuevo campo datetime y tampoco...
ALTER TABLE tabla add campo_nuevo datetime DEFAULT (' ')
Lo crea correctamente pero...
ALTER TABLE tabla ALTER COLUMN campo_nuevo DROP DEFAULT
Y me da el error...
Servidor: mensaje 156, nivel 15, estado 1, línea 1
Incorrect syntax near the keyword 'DEFAULT'.
Continúe leyendo en narkive:
Resultados de búsqueda para 'Cambiar valor por defecto de un datetime' (Preguntas y respuestas)
5
respuestas
¿problemas con mi msn ayuda por favor?
iniciado 2008-12-31 13:45:50 UTC
software
Loading...