Sto cercando di creare un trigger PostgreSQL in uno script di evoluzione del database Play2.0. Il codice SQL è relativamente facile e funziona bene in pgAdminIII:Creazione di trigger PostgreSQL utilizzando JDBC
CREATE OR REPLACE FUNCTION update_modified() RETURNS TRIGGER AS $$
BEGIN
NEW.modified = now();
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
Tuttavia, ottengo un errore durante l'esecuzione l'evoluzione: ERROR: unterminated dollar-quoted string at or near "$$ BEGIN NEW.modified = now()"
. Il codice SQL sembra essere troncato a il primo punto e virgola incontrato nella funzione. Sto usando il driver JDBC "9.1-901.jdbc4" per PostgreSQL.
Aggiornamento:
Il codice in Evolutions.scala (linea 219+) esegui una semplice spaccatura sul ;
. Sembra essere difettoso nel quadro stesso:
// Execute script
s.sql.split(";").map(_.trim).foreach {
case "" =>
case statement => execute(statement)
}
Qualsiasi soluzione?
Il problema è stato discusso [qui] (http://archives.postgresql.org/pgsql-jdbc/2010-03/msg00056.php). – fynn
Mostraci il codice Java che crea il trigger. –
Il codice che crea il trigger non è il mio poiché lo script sql è uno [script di sviluppo del database di riproduzione] (http://www.playframework.org/documentation/2.0/Evolutions). Immagino che il codice (Scala!) Possa essere trovato [qui] (https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/db/evolutions /Evolutions.scala). – fynn