Por ejemplo:¿Puedo actualizar Nuevo en antes de insertar el disparador en sqlite?
create table test (id numeric, t date not null);
create trigger test_in
before insert on test
for each row
when New.t is null
begin
-- set New.t = now();
end;
Conjunto New.t no funcionó, where can be only select/insert/update/delete stmt. No puedo cambiar la estructura de base de datos (se puede establecer el valor por defecto). Después del disparo de inserción tampoco es adecuado debido a la restricción "no nula". La única solución que he encontrado:
insert into test values (New.id, now());
select raise(ignore);
base de datos de prueba para fines ilustrativos, en la práctica hay casos más complicados con los datos calculados. Puede haber algo así como "update New set New.t = now()", o no?
¿Se puede crear una vista con un gatillo INSTEAD OF e insertarlo en la vista? –
También es una variante de la decisión, pero no resuelve el problema. En mi caso, las tablas se crean en el proceso de sincronización. Puedo ejecutar cualquier ddl después. – lunicon
En el modelo de la base de datos principal también se usa trigger con set stmt. Puedo crear una vista, pero tendré que cambiarla y programarla (si puedo ...) – lunicon