Problema CRON y AT en Debian

Iniciado por rusogumo, 21 Noviembre 2014, 12:48 PM

0 Miembros y 1 Visitante están viendo este tema.

rusogumo

NADIE QUE ME PUEDA ECHAR UNA MANO CON SQL???? Estoy muy perdido... solo controlo los comandos basicos =(

MinusFour

#21
Cita de: rusogumo en 11 Diciembre 2014, 12:27 PM
NADIE QUE ME PUEDA ECHAR UNA MANO CON SQL???? Estoy muy perdido... solo controlo los comandos basicos =(

Esto parece una duda de SQL, no de GNU/Linux.

UPDATE no deberia insertar valores en la base de datos, simplemenete actualizar. Desconozco la estructura de tu tabla pero quizas lo que buscas es:

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Edit: Me doy cuenta que usas postgreSQL (yo solo manejo mysql).

Carloswaldo

Hola

Estaba pensando en que podías hacerlo con una regla (RULE) pero siendo que tienes el UPDATE, si el update llama a una id que no existe la regla no se va a ejecutar, así que tendrías que tener mejor el INSERT y hacer una regla ON INSERT DO INSTEAD UPDATE.

Otra forma en que lo podrías hacer es con esta función que está en la documentación de PostgreSQL:

Código (sql) [Seleccionar]
CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS
$$
BEGIN
    LOOP
        -- first try to update the key
        UPDATE db SET b = data WHERE a = key;
        IF found THEN
            RETURN;
        END IF;
        -- not there, so try to insert the key
        -- if someone else inserts the same key concurrently,
        -- we could get a unique-key failure
        BEGIN
            INSERT INTO db(a,b) VALUES (key, data);
            RETURN;
        EXCEPTION WHEN unique_violation THEN
            -- Do nothing, and loop to try the UPDATE again.
        END;
    END LOOP;
END;
$$
LANGUAGE plpgsql;


http://www.postgresql.org/docs/9.4/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING

O, por último, podrías modificar el script para que primero verifique si el registro existe o no y hacer UPDATE o INSERT según corresponda.

rusogumo

gracias por los consejos!!! los provare y te cuento con que me kedo