Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    101

    [PostgreSQL] Errore di sintassi

    A questo script mi da quell'errore, ma nn capisco xè..

    CREATE TRIGGER incrementa_opere_museo
    AFTER INSERT ON “Opera”
    FOR EACH ROW
    BEGIN
    UPDATE “Museo” SET numero_opere_presenti = numero_opere_presenti + 1 WHERE idmuseo= NEW.idmuseo;
    END;

    questo errore


    Errore SQL:


    ERROR: syntax error at or near "BEGIN"
    LINE 4: BEGIN
    ^

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La sintassi dovrebbe essere

    CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }
    ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
    EXECUTE PROCEDURE funcname ( arguments )

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    101
    quindi... il provecesso da eseguire lo devo mettere in una funzione e richiamarla ?

    e come glielo passo il parametro alla funzione ?


    CREATE OR REPLACE FUNCTION incrementa_opere_museo(parametro) RETURNS TRIGGER AS $incrementa_opere_museo$

    BEGIN
    UPDATE “Museo” SET numero_opere_presenti = numero_opere_presenti + 1 WHERE idmuseo= parametro;
    END;



    così ??
    MAHHH e ri9chiamarla dal trigger ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    101
    ho provato così :

    CREATE OR REPLACE FUNCTION incrementa_opere_museo(parametro) RETURNS TRIGGER AS $incrementa_opere_museo$

    BEGIN
    UPDATE “Museo” SET numero_opere_presenti = numero_opere_presenti + 1 WHERE idmuseo= parametro;
    RETURN NULL;
    END;
    $incrementa_opere_museo$ LANGUAGE plpgsql;

    CREATE TRIGGER incrementa_opere_museo
    AFTER INSERT ON “Opera”
    FOR EACH ROW
    EXECUTE PROCEDURE incrementa_opere_museo(NEW.idmuseo)



    e da questo errore


    ERROR: syntax error at or near "NEW"
    LINE 12: EXECUTE PROCEDURE incrementa_opere_museo(NEW.idmuseo)

  5. #5
    basta che scrivi solo idmuseo senza il NEW...
    I database... la mia passione + o -

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.