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 18-09-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 110
Poder: 20
andressanchez Va por buen camino
cambiar campo null a not null

Hola foristas

Mi problema es el siguiente, tengo una tabla donde todos los campos aceptan valores nulos y quiero establecer un primary key. Cuando corro el script no cambia la estructura porque el campo acepta valores nulos y el manejador de BD (firebird) no permite la creacion de primary key con campos que acepten valores nulos. No sé como modificar la estructura. He buscado en el foro al respecto pero no encuentro algo similar.

Agradesco sus atenciones.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 18-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Cuando corro el script no cambia la estructura porque el campo acepta valores nulos y el manejador de BD (firebird) no permite la creacion de primary key con campos que acepten valores nulos.
Creo que es el campo "primary key" el que no puede ser nulo, pero, el resto de campos sí que pueden serlo, ¿me equivoco?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 18-09-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 110
Poder: 20
andressanchez Va por buen camino
Exactamente, necesito establecer un campo not null para poder hacer un Primary key. La tabla ya esta creada y tiene datos.
Responder Con Cita
  #4  
Antiguo 18-09-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Creo que la única forma de lograrlo sería modificando una tabla del sistema de Interbase:

Código SQL [-]
update rdb$relation_fields set
rdb$null_flag = 1
where (rdb$field_name = 'CAMPO')
and (rdb$relation_name = 'TABLA');

Y luego hacer un update:

Código SQL [-]
update TABLE
set CAMPO = xxx
where CAMPO IS NULL;


Saludos...
Responder Con Cita
  #5  
Antiguo 18-09-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 110
Poder: 20
andressanchez Va por buen camino
Muchas gracias, voy a probar a ver que pasa. Luego te cuento como me fue.
Responder Con Cita
  #6  
Antiguo 18-09-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Has un backup de tu base de datos antes de intentar este o cualquier otro cambio a la metadata de los objetos de la misma.



Saludos...
Responder Con Cita
  #7  
Antiguo 18-09-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 110
Poder: 20
andressanchez Va por buen camino
ya modifique la tabla del sistema de Interbase y corrio perfecto.

ahora bien no entiendo lo del update...
Responder Con Cita
  #8  
Antiguo 18-09-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
El update lo ejecutas para que los registros que tienen ese campo establecido en nulo ya no lo tengan y no te de errores de clave primaria nula.

Ahora, al ser clave primaria, lo mejor sería que hicieras algún procedimiento almacenado que establezca un valor único a cada registro, a menos claro, que estos ya estén así.



Saludos...
Responder Con Cita
  #9  
Antiguo 18-09-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 110
Poder: 20
andressanchez Va por buen camino
Este campo se alimenta de un generador, cada vez que se dispara el trigger before insert.

Muchas gracias por tus respuestas me ayudaron mucho.
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
Guardar null (nolo) en un campo fecha en Firebird cahosoft Conexión con bases de datos 3 19-04-2014 10:54:17
Poner un campo de fecha a 'Null' gluglu Varios 5 30-11-2005 00:43:07
Integridad sobre un campo que puede ser NULL gluglu Conexión con bases de datos 1 08-02-2005 13:11:45
Valor Null en campo float de un FasReport Romanosky Impresión 4 10-11-2004 18:56:04
campo null anay Varios 1 14-11-2003 20:49:13


La franja horaria es GMT +2. Ahora son las 02:07:02.


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