2010-10-15 26 views
6

estoy usando la siguiente consulta para obtener información acerca de las columnas de una tabla:¿Es posible que una tabla SQL tenga cero columnas?

SELECT COLUMN_NAME, 
     ORDINAL_POSITION, 
     DATA_TYPE, 
     CHARACTER_MAXIMUM_LENGTH, 
     Is_NULLABLE 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = 'TableName' 
    ORDER BY ORDINAL_POSITION 

Si esta consulta devuelve cero resultados, puedo SEGURIDAD declarar que la tabla no existe? ¿O de alguna manera es posible que la tabla exista pero (perversamente) no tiene columnas?

Ya estoy consultando INFORMATION_SCHEMA.TABLES para averiguar si la tabla existe, pero me gustaría reducirla a una consulta si es posible.

Para futuras referencias, encontré estas preguntas relacionadas:
Create a table without columns
Can I select 0 columns in SQL Server?

Respuesta

5

si se intenta:

create table TestTable (id int) 
alter table TestTable drop column id 

SQL Server se queja de que:

Msg 4923, Level 16, State 1, Line 1 
ALTER TABLE DROP COLUMN failed because 'id' is the only data column in table 
'TestTable'. A table must have at least one data column. 

Así a capaz siempre debe tener al menos una columna.

+0

Sonidos agradables. Intenté algo similar que también falló. Solo quiero asegurarme de que no me falta un caso marginal. – Greg

1

Si mirara la definición de la vista INFORMATION_SCHEMA.COLUMNS, verá que comienza con la tabla sys.objects, buscando los tipos de 'U' (tabla, definida por el usuario) o 'V '(ver), por lo que ya está realizando el control de la existencia de la tabla para usted.

CREATE VIEW INFORMATION_SCHEMA.COLUMNS 
AS 
SELECT 
... 
FROM 
sys.objects o JOIN sys.columns c ON c.object_id = o.object_id 
LEFT JOIN sys.types t ON c.user_type_id = t.user_type_id 
WHERE 
o.type IN ('U', 'V') 
+0

Está confirmando lo que ya dije en mi pregunta. Si una tabla puede tener cero columnas, esta vista por sí sola no me ayudará a distinguir entre una tabla que no existe y una tabla sin columnas. Mi pregunta es: ¿una tabla puede tener cero columnas? – Greg

Cuestiones relacionadas