Insertar Campo

31/05/2005 - 18:16 por Armando | Informe spam
Cordial Saludo...

Tengo una bd con 100 tablas...necesito crear un campo de tipo fecha para
todas las tablas. ¿Puedo hacer esto con una instruccion sql? o ¿Debo agregar
el campo tabla por tabla?

Gracias

Preguntas similare

Leer las respuestas

#1 qwalgrande
31/05/2005 - 18:27 | Informe spam
Hola.

Sí, tienes que ir tabla por tabla, pero puedes prepararte el script
rápidamente con una consulta, más a menos así:

select 'alter table ' + name + ' add column Fecha smalldatetime GO'
from sysobjects where type = 'u'

Y sobre todo, prueba mil veces antes de ejecutarlo de forma definitiva, con
todo parado y con un backup hecho y verificado.

qwalgrande

"De lo que ves créete la mitad, de lo que no ves no te creas nada"
V. del V.


"Armando" escribió en el mensaje
news:
Cordial Saludo...

Tengo una bd con 100 tablas...necesito crear un campo de tipo fecha para
todas las tablas. ¿Puedo hacer esto con una instruccion sql? o ¿Debo
agregar
el campo tabla por tabla?

Gracias
Respuesta Responder a este mensaje
#2 Maxi
31/05/2005 - 18:36 | Informe spam
Hola, una forma.

1) entras al query analizer
2) lo pones en modo texto
3) ejecutas el siguiente query

SELECT ' ALTER TABLE [' + TABLE_NAME + '] ADD FECHA DATETIME ' + CHAR(13) +
'GO' FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME NOT LIKE 'SYS%' AND TABLE_TYPE='BASE TABLE'

4) Copias el resultado (sin la cabecera ni el total de registros) en el QA y
haces Play

5) Mucha Suerte :-)


Salu2
Maxi


"Armando" escribió en el mensaje
news:
Cordial Saludo...

Tengo una bd con 100 tablas...necesito crear un campo de tipo fecha para
todas las tablas. ¿Puedo hacer esto con una instruccion sql? o ¿Debo
agregar
el campo tabla por tabla?

Gracias
Respuesta Responder a este mensaje
#3 Alejandro Mesa
01/06/2005 - 01:02 | Informe spam
Armando,

Puedes declarar un cursor para navegar por las tablas de usuario y
alterarlas, adicionando la columna.

Ejemplo:

use northwind
go

declare @sql nvarchar(4000)
declare @ts sysname
declare @tn sysname
declare tables_cursor cursor local fast_forward
for
select
table_schema,
table_name
from
information_schema.tables
where
table_type = 'base table'
and objectproperty(object_id(quotename(table_schema) + '.' +
quotename(table_name)), 'IsMSShipped') = 0

open tables_cursor

while 1 = 1
begin
fetch next from tables_cursor into @ts, @tn

if @@error != 0 or @@fetch_status != 0 break

set @sql = N'alter table ' + quotename(@ts) + '.' + quotename(@tn) + N' add
c1 datetime null'
print @sql
exec sp_executesql @sql
end

close tables_cursor
deallocate tables_cursor
go


AMB


"Armando" wrote:

Cordial Saludo...

Tengo una bd con 100 tablas...necesito crear un campo de tipo fecha para
todas las tablas. ¿Puedo hacer esto con una instruccion sql? o ¿Debo agregar
el campo tabla por tabla?

Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida