2011-11-04 17 views
5

Cómo hacer un pedido ON UPDATE en una solicitud CREATE TABLE en la base de datos H2.H2DB - script SQL ON UPDATE en la solicitud CREATE TABLE

Contexto:

estoy usando el SQL-maven-plugin de (1.5) para generar una tabla en una base de datos h2 en mi proyecto.

Pero cuando llamo al script sql, tengo un org.h2.message.DbException.getJdbcSQLException.

Mi script:

CREATE TABLE IF NOT EXISTS TEST(
    DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
); 

Respuesta

6

H2 no admite "ON UPDATE". Pero supongo que se podría utilizar un computed column vez ?:

CREATE TABLE IF NOT EXISTS TEST(
    DATE timestamp AS CURRENT_TIMESTAMP 
); 
+0

bien, gracias por la respuesta. Voy a echar un vistazo a esto. – user1029346

+0

@Thomas Mueller hace este trabajo en ACTUALIZAR o solo en CREAR? – igr

+0

Esta pregunta es bastante antigua, y H2 ahora es compatible con "ACTUALIZAR ACTUALIZADO". Pero si pide "SI EXISTE": esto solo es compatible con "CREAR". –

0

Añadir a su archivo SQL:

CREATE TABLE IF NOT EXISTS my_table (
    `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
); 
CREATE TRIGGER my_trigger 
    BEFORE UPDATE 
    ON my_table 
    FOR EACH ROW CALL "org.h2.trigger.UpdatedAtTrigger"; 

crear una clase Java y añadir a la ruta de clases de pruebas:

package org.h2.trigger; 

import java.sql.*; 
import java.time.Instant; 
import org.h2.tools.TriggerAdapter; 

public class UpdatedAtTrigger extends TriggerAdapter { 

    @Override 
    public void fire(Connection conn, ResultSet oldRow, ResultSet newRow) throws SQLException { 
    newRow.updateTimestamp("updated_at", Timestamp.from(Instant.now())); 
    } 
} 
Cuestiones relacionadas