Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-01-2008
Avatar de Milperrimo
Milperrimo Milperrimo is offline
Miembro
 
Registrado: sep 2007
Ubicación: Guadalajara
Posts: 57
Poder: 17
Milperrimo Va por buen camino
crear tabla si no existe

Saludos, he estado buscando por mas de 1 hora como hacer la sentecia de que si no existe una tabla la crea, no encontre nada absolutamente asi que acudo a ustedes companeros, me encontre con la siguiente:

Código SQL [-]
IF NOT EXISTS (select 1 from RDB$RELATIONS where RDB$RELATION_NAME='MOVTO')
THEN
     CREATE TABLE MOVTO (
              IDMOVI INTEGER,
              ADESC VARCHAR(25));
END IF;

Pero no funciona, alguien sabe como le puedo hacer?????
Responder Con Cita
  #2  
Antiguo 04-01-2008
Avatar de javier7ar
javier7ar javier7ar is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 124
Poder: 19
javier7ar Va por buen camino
Tenes que ver donde guarda interbase la informacion de las tablas que creas, quizas le estas errando en eso. No uso interbase, pero en SQL Server esta info esta en la tabla sysobjects, entonces si no esta la entrada en esa tabla, es porque la tabla no existe. Te pongo el codigo de SQL Server:

Código SQL [-]
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MOVTO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
begin
CREATE TABLE [dbo].[MOVTO] (
    [IDMOVI] [int] NOT NULL ,
    [ADESC] [varchar](25) NOT NULL 
) ON [PRIMARY]
end

P/D: no tenes una herramienta para generar el script de un tabla ?? porque generalmente esas herramientas cuando generan el sql de un tabla primero preguntan si la tabla existe y la borran para volver a crearla, de ahi podes robar el codigo para preguntar si existe la tabla o no.
Espero te sirva
Saludos
Responder Con Cita
  #3  
Antiguo 04-01-2008
Avatar de Milperrimo
Milperrimo Milperrimo is offline
Miembro
 
Registrado: sep 2007
Ubicación: Guadalajara
Posts: 57
Poder: 17
Milperrimo Va por buen camino
buen dato, voy a checarle, gracias
Responder Con Cita
  #4  
Antiguo 04-01-2008
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
La siguiente sentencia crea la tabla si no existe, de lo contrario la altera y si no hay cambios pues no hace nada en ella, depronto le puede servir

Código SQL [-]
RECREATE TABLE MOVTO (
              IDMOVI INTEGER,
              ADESC VARCHAR(25));
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #5  
Antiguo 04-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
el SQL de interbase/firebird no soporta bloques condicionales. Estos si están soportados en PSQL, pero por ahora, no te quedaría de otra que crear un stored procedure.

Mi opinión personal es que regularmente nunca necesitas realizar este tipo de chequeos en un script, siempre que seas ordenado.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 04-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por RONPABLO Ver Mensaje
La siguiente sentencia crea la tabla si no existe, de lo contrario la altera y si no hay cambios pues no hace nada en ella, depronto le puede servir

Código SQL [-]
RECREATE TABLE MOVTO (
              IDMOVI INTEGER,
              ADESC VARCHAR(25));
Muy buena.!!!
Esta si no la conocía... supongo que la pasé por alto en los release notes. La he probado contra firebird 2.0 y funciona. ¿a partir de que versión está disponible?

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 04-01-2008
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Desde firebird 1.5 xD
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #8  
Antiguo 04-01-2008
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
aclaro que fui muy corto en mi respuesta anterior, la he probado en la versión 1.5 y funciona bien, la encontré una vez que veía los ddl que genera el DataBase WorckBench, seria bueno probarla en versiones anteriores y hasta en InterBase
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #9  
Antiguo 04-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Ves por que te digo que no hacía falta una instrucción como esa...

Hace mucho existe y no me dí cuenta porque nunca la necesité...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
crear nuevo campo a una tabla si no existe landro Firebird e Interbase 3 24-01-2007 21:56:18
Comprobar si existe la tabla... Acanol Conexión con bases de datos 10 06-06-2006 17:41:58
Tabla existe? chileno MySQL 3 08-02-2006 18:56:59
Tabla existe ? Fita Conexión con bases de datos 2 09-10-2005 08:24:39


La franja horaria es GMT +2. Ahora son las 04:41:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi