Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Insert parcializado (https://www.clubdelphi.com/foros/showthread.php?t=84961)

santiago14 05-01-2014 23:06:28

Insert parcializado
 
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:
Código SQL [-]
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

Cita:

Empezado por santiago14 (Mensaje 471344)
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:
Código SQL [-]
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:
Código SQL [-]
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:
Código SQL [-]
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:
Código:

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.

Cita:

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

Un script ejemplo para modificar la tabla del mensaje anterior:
Código SQL [-]
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

Cita:

Empezado por ecfisa (Mensaje 471349)
Hola santiago14.


Así es.

Un script ejemplo para modificar la tabla del mensaje anterior:
Código SQL [-]
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 Noteví 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

Cita:

Empezado por Casimiro Notevi (Mensaje 471354)
Creía que era algo estándar sql, que todos permiten hacerlo.

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


La franja horaria es GMT +2. Ahora son las 18:35:55.

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