¿Existe alguna manera portátil de determinar si una tabla de base de datos ya existe o no?SQL portátil para determinar si existe una tabla o no?
Respuesta
Portátil? No lo creo.
Tal vez el más cercano que puedes conseguir es:
select * from <table>
y esto devolverá un error si la tabla no existe.
Aye Alan, esa es la conclusión a la que llegué. ¡Cojo! – jkp
Esto es tan portátil como se pone, por desgracia:
select
count(*)
from
information_schema.tables
where
table_name = 'tablename'
and table_schema = 'dbo'
Esto definitivamente funciona en SQL Server, MySQL y Postgres. No tanto en Oracle, sin embargo. Tendría que acceder al diccionario de datos de Oracle para eso. Sin embargo, hay un proyecto de código abierto que creates information_schema
in Oracle del diccionario de datos. Puede intentar eso si necesita una portabilidad absoluta.
P.S.-Schema no tiene que ser dbo
, pero ese es el más común.
no se olvide de comprobar el esquema también. dbo.tablename y MySchema.tablename podrían existir ambos. –
Como cada DBMS tiene su propia metabase, creo que la forma más "portátil" de hacerlo es usar la misma persona que llama la aplicación. Algo como
try
execute("select top 1 * from table")
return (true)
catch
return false
Intenta consultar la tabla. Si la consulta falla, se obtiene un error, no existe.
Eso es probablemente tan portátil como puedas conseguir. La carga de producir el resultado depende del código que consulta la tabla/base de datos.
select top 1 *
from MyTable
Mantenga la consulta lo más simple posible para evitar otros posibles errores.
Las vistas INFORMATION_SCHEMA son estándar ANSI, por lo que esa debería ser su opción más portátil. No se olvide de añadir el tipo de esquema y la tabla a la cláusula where ...
if exists(select *
from information_schema.tables
where table_schema = 'dbo'
and table_name = 'MyTable'
and table_type = 'basetable')
begin
-- your code here
end
Aquí es algo que es razonablemente portátil:
seleccione ahora() del límite de la tabla 1;
No se basa en el conocimiento de ninguna columna en particular.
No incurre en los gastos generales que el recuento (*) a veces tiene.
No importa si la tabla está vacía o no.
No funciona si la tabla no existe.
No funciona con SQLServer – Toto
' now() 'no es" portable ". 'current_timestamp' sería –
diría
select 'x' from <table_name> where 0=1;
El inconveniente es que si se produce un error, usted no sabe a ciencia cierta cuál fue la causa real. Es posible que le falte una tabla o, por ejemplo, un error de conexión. Puede analizar el mensaje de error, pero definitivamente no sería portátil.
- 1. Usando consulta SQL para determinar si existe una tabla
- 2. Compruebe si existe una tabla SQL
- 3. Eliminar fila si existe tabla SQL
- 4. ¿Cuál es la mejor manera de determinar si existe una tabla temporal en SQL Server?
- 5. Agregue una columna a una tabla, si no existe
- 6. cómo comprobar si la tabla existe y si no existe Crear una tabla en SQL Server 2008
- 7. ¿Cómo funciona esta consulta SQL para actualizar una fila si existe, o insertar si no?
- 8. Comprobando si existe una URL o no
- 9. sql - inserte si no existe
- 10. ¿Determina si la tabla existe en SQL Server CE?
- 11. SQL Server SI NO EXISTE ¿Uso?
- 12. Comprobar si existe tabla
- 13. Caída de una tabla temporal si existe
- 14. Forma rápida de determinar si existe un campo en una tabla ORACLE
- 15. ¿Cómo verifica si existe una tabla con NHibernate (o Fluent)?
- 16. Compruebe si existe tabla
- 17. ¿Existe una heurística para determinar si un método o campo pertenece a una clase?
- 18. Crear tabla si no existe desde mysqldump
- 19. PostgreSQL crean tabla si no existe
- 20. SI EXISTE en T-SQL
- 21. inserción SQL condicional si la fila no existe ya
- 22. T-SQL: inserte una fila en una tabla solo si no existe
- 23. ¿Truncar una tabla SQLite si existe?
- 24. Comprueba si existe una fila o no en postgresql
- 25. ¿Cómo puedo detectar si existe una tabla (que no tiene una clase o ID)?
- 26. Crear una tabla SQLite solo si no existe
- 27. Comprobar si la tabla existe en C#
- 28. Servidor SQL: SI EXISTE; ELSE
- 29. ¿Cómo determinar si una fila de la tabla es visible o no?
- 30. ¿Cómo puedo determinar si existe una función de base de datos en SQL Server?
más portable: _select * from YourTable_, si obtiene un error, entonces no existe, si no obtiene un error, existe. ;-) –