PDA

Ver la Versión Completa : Insert parcializado


santiago14
05-01-2014, 23:06:28
Buenas, ante todo, feliz 2.014 para todos en este maravilloso foro.
Voy a la cuestión. Es sabido que en una BD Oracle puedo hacer un Inser parcializado. A saber:

Tabla A
campo1 campo2 campo3 campo4

En este caso puedo hacer:

Insert into A (campo1, campo2)
Values (:Campo1, :campo2)


Y no se queja, los otros campos son puestos a Null o al valor que se le haya asignado por defecto.

¿Esto puede hacerse en Firebird?

Esto es muyb potente, ya que si agregamos campos a la BD, no tenemos que andar rastreando pot todo el código para modificar nuestros insert's

Gracias de antemano y saludos a todos.

Santiago.

ecfisa
06-01-2014, 00:15:55
Voy a la cuestión. Es sabido que en una BD Oracle puedo hacer un Inser parcializado. A saber:

Tabla A
campo1 campo2 campo3 campo4

En este caso puedo hacer:

Insert into A (campo1, campo2)
Values (:Campo1, :campo2)


Y no se queja, los otros campos son puestos a Null o al valor que se le haya asignado por defecto.

¿Esto puede hacerse en Firebird?

Hola santiago14.

Si, Firebird soporta sin problemas la inserción parcial de campos.

Sea por ejemplo la tabla:

CREATE TABLE PERSONAS (
ID INTEGER,
NOMBRE VARCHAR(30),
ANIO_NAC SMALLINT,
EDAD COMPUTED BY (CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS INTEGER)- ANIO_NAC),
DOCUMENTO VARCHAR(11),
DIRECCION VARCHAR(30)
);

La instrucción:

INSERT INTO PERSONAS (ID, NOMBRE, ANIO_NAC)
VALUES (:ID,:NOMBRE,:ANIO_NAC)

dando los valores ID = 1, NOMBRE = "PEPE" y ANIO_NAC = 1980, da como resultado:

ID NOMBRE ANIO_NAC EDAD DOCUMENTO DIRECCION
1 PEPE 1980 34 <Null> <Null>


Saludos :)

santiago14
06-01-2014, 00:37:13
Gracias compañero.
Supongo que habrá que declarar los valores por defecto de los campos.

Gracias.

Santiago.

santiago14
06-01-2014, 00:52:16
Funciona de 10... No fue necesario declarar valores por defecto, asume que el valor por defecto es null.
Por supuesto, si queremos darle algún valor por defecto, podemos hacerlo.

Muchas gracias.

Santiago.

ecfisa
06-01-2014, 00:54:24
Hola santiago14.

Supongo que habrá que declarar los valores por defecto de los campos.
Así es.

Un script ejemplo para modificar la tabla del mensaje anterior:

ALTER TABLE PERSONAS ALTER NOMBRE SET DEFAULT '';
ALTER TABLE PERSONAS ALTER ANIO_NAC SET DEFAULT 1900;
ALTER TABLE PERSONAS ALTER DOCUMENTO SET DEFAULT '';
ALTER TABLE PERSONAS ALTER DIRECCION SET DEFAULT '';


Saludos :)

santiago14
06-01-2014, 01:08:06
Hola santiago14.


Así es.

Un script ejemplo para modificar la tabla del mensaje anterior:

ALTER TABLE PERSONAS ALTER NOMBRE SET DEFAULT '';
ALTER TABLE PERSONAS ALTER ANIO_NAC SET DEFAULT 1900;
ALTER TABLE PERSONAS ALTER DOCUMENTO SET DEFAULT '';
ALTER TABLE PERSONAS ALTER DIRECCION SET DEFAULT '';


Saludos :)

Exacto, ni mas ni menos.

Gracias nuevamente. Pero si uno no pone los valores por defecto, asume que es NULL. Interesante.

Santiago.

Casimiro Notevi
06-01-2014, 10:19:31
Creía que era algo estándar sql, que todos permiten hacerlo.

cloayza
06-01-2014, 17:00:45
Creía que era algo estándar sql, que todos permiten hacerlo.

Al parecer no es así...:confused: