Hola a todos, tengo escrita una función que hace lo siguiente:
1º busca el id de documentos
2º si no lo encuentra lo ingresa en el tabla documentos
3º ingresa en la tabla personal el nombre, id del tipo de documento(dada la descripción)) y nº doc.
El motivo: Pasarla a SQL porque el hosting postgres tiene solamente ese lenguaje
La Función:
Código SQL
[-]CREATE OR REPLACE FUNCTION pruebas(varchar, varchar, integer)
RETURNS SETOF personal AS
$delimiter$
BEGIN
PERFORM id from documentos WHERE descripcion = $1;
IF NOT FOUND THEN
INSERT INTO documentos(descripcion) VALUES($1);
END IF;
INSERT INTO personal(nombre,idtipodocumento,numdoc)
VALUES($2,(SELECT id from documentos WHERE descripcion = $1),$3);
END;
$delimiter$
LANGUAGE plpgsql;
Tablas
documentos
Código SQL
[-]CREATE TABLE documentos
(
id serial NOT NULL,
descripcion character varying(60),
CONSTRAINT pkdocumentos PRIMARY KEY (id)
)
personal
Código SQL
[-]CREATE TABLE personal
(
id serial NOT NULL,
nombre character varying(60),
idtipodocumento smallint NOT NULL,
numdoc integer,
CONSTRAINT pkpersonal PRIMARY KEY (id),
CONSTRAINT fkpdoc FOREIGN KEY (idtipodocumento)
REFERENCES documentos (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT unqnumdoc UNIQUE (idtipodocumento, numdoc)
)