PDA

Ver la Versión Completa : Crear Llave Primaria


ebeltete
07-12-2007, 00:09:42
Hola amigos, estoy trabajando con Firebird 2.0 y Delphi 5, estoy tratando de crear una llave primaria en una tabla con:
ALTER TABLE mitabla add constraint pk_codigo primary key(id_codigo)
Me da este error:
validation error for column ID_CODIGO, value "*** null ***"
Supongo es que tiene que ser not null el campo id_codigo
mi pregunta es la sentencia para cambairlo a not null?
Ademas tengo otras preguntas:

1- se puede cambiar el nombre a un campo?
2- Donde puedo encontrar las sintaxis para cambiar , agregar, borrar campos, constraints, indexes, etc?

Gracias.

Héctor Randolph
07-12-2007, 00:57:34
Hola ebeltete!


validation error for column ID_CODIGO, value "*** null ***"


Este error más bien parece que surge al validar los datos y no en la estructura de la tabla. Antes de crear la llave primaria verifica que todos los registros contengan un valor en la columna ID_CODIGO. Es decir, si algún registro es nulo en esa columna no puedes crear una llave primaria.

Saludos

hecospina
07-12-2007, 15:20:11
hola
No recuerdo el hilo pero en alguno de ellos coloque un link que te lleva a un manual de Interbase

Para modificar tablas puedes usar :

MODIFICANDO UNA TABLA. ALTER TABLE :
Se utiliza para modificar la estructura de una tabla existente, el comando ALTER TABLE permite:
·Agregar una nueva columna a la tabla.
·Eliminar una columna de la tabla.
·Borrar Constraint de Integridad de la tabla.
Antes de ir a alterar una tabla es necesario asegurarse de tener:
·Privilegios en la base de datos.
·Eliminar los constraints a nivel de columnas.
·Grabar los datos existentes.
ALTER TABLE le permite hacer los siguientes cambios a nivel de columnas:
·Agregar nuevas definiciones de columnas
·Agregar nuevos Constraints a la Tabla.
·Eliminar definiciones de columnas existentes.
·Eliminar constraints de tablas existentes.
1. AGREGANDO NUEVAS COLUMNAS: La sintaxis para agregar una nueva columna es:
ALTER TABLE tabla ADD <definición de columna>
< definición de columna > = columna { <tipo de dato> | [COMPUTED [BY] (< Expresión>) | dominio}
[DEFAULT { literal | NULL | USER}]
[NOT NULL] [ <col_constraint>]
[COLLATE collation]
<col_constraint> = [CONSTRAINT constraint] <constraint_def>
[ <col_constraint>]
Ejemplo práctico :
ALTER TABLE EJEMPLO ADD EMP_NO EMPNO NOT NULL;
2. AGREGANDO NUEVOS CONSTRAINTS : La sintaxis para agregar un constraint es :
ALTER TABLE nombre ADD [CONSTRAINT constraint] <tconstraint_opt>;
Ejemplo :
ALTER TABLE EMPLOYEE
ADD CONSTRAINT DEPT_NO UNIQUE(PHONE_EXT);
3. ELIMINANDO UNA COLUMNA : La sintaxis para la eliminación es :
ALTER TABLE nombre DROP nombre columna [,nombre columna...];
Ejemplo :
ALTER TABLE EMPLOYEE
DROP EMP_NO,
DROP FULL_NAME;
4. BORRANDO LOS CONSTRAINTS: Los constraints deben de ser borrados con el orden apropiado. Por ejemplo si se va a borrar un constraint de PRIMARY KEY, debe de ser borrado el constraint de FOREIGNT KEY.
Ejemplo :
ALTER TABLE VENTAS_DETALLE
DROP CONSTRAINT INTER_37;
ALTER TABLE VENTAS
DROP CONSTRAINT INTEG_32;
BORRANDO UNA TABLA. DROP TABLE :
Se utiliza para borrar una tabla existente de la base de datos. Se debe utilizar para borrar datos, METADATOS e índices de la base de datos. Borra cualquier TRIGGER relacionado con la tabla.
Esta operación de borrado puede dar problemas, aquí hemos recopilado algunos casos:
·La persona que esta borrando la tabla no es un usuario con privilegios.
·La tabla esta en uso, el borrado espera hasta que se desocupe.
·La tabla tiene llave primaria o única y esta referenciada en otra tabla como foránea; hay que borrar la llave foránea.
·La tabla es utilizada en una vista, columna calculada, procedimiento, etc., borre todas las referencias.
La sintaxis es .
DROP TABLE nombre;
Ejemplo :
DROP TABLE VENTAS;

Esto es extractado de este manual

Lo que dice Héctor sobre los campos nulos es correcto
Tampoco puede terner valores repetidos para esta columna