2009-11-22 8 views
13

Necesito agregar una columna de indicador de eliminación a las 40 tablas de usuario en una base de datos. Podría escribir un guión para recorrer sys.tables, pero pensé que verificaría si alguien tiene una mejor solución o SQL creado previamente para este escenario.Agregar una columna a todas las tablas de usuario en t-sql

Respuesta

31

Hay un indocumentado, pero bien conocidos almacenada sp_msforeachtable procedimiento:

exec sp_msforeachtable 'alter table ? add flag bit not null default 0'; 
+0

+1, pero ... seraphym está pidiendo una manera de quitar una columna . Aunque su declaración podría reescribirse fácilmente para soltar, el nombre de la columna de destino debería ser uniforme en todas las tablas. –

+3

psasik, seraphym desea agregar una columna llamada 'eliminar' a cada tabla, no eliminar una columna de cada tabla. –

+0

muy bien, gracias por tu ayuda! – seraphym

11

No, es un bucle manual.

O usted podría construir una única sentencia SQL por supuesto ...

SELECT 
    'ALTER TABLE ' + T.name + ' ADD foo int NULL' 
FROM 
    sys.tables AS T 
WHERE 
    T.is_ms_shipped = 0 

O los indocumentados

EXEC sys.sp_MSforeachtable 'ALTER TABLE ? ADD foo int NULL' 
Cuestiones relacionadas