Si en la tabla transaccion lleva un primary key, por defecto es not null y es necesario incluirlo en cualquier inserciòn.
Con respecto al trigger faltan algunos detalles... como el
for each row
Código SQL:
Ver originalSQL> CREATE OR REPLACE TRIGGER actualizar
AFTER UPDATE ON Cuenta
FOR each ROW WHEN (NEW.balance <> 999)
BEGIN
INSERT INTO Transaccion (nro_cuenta,hora_mod, ant_balance, act_balance) VALUES(:OLD.nro_cuenta,SYSDATE, :OLD.balance, :NEW.balance);
END actualizar;
/ 2 3 4 5 6 7
Disparador creado.
SQL> SELECT *FROM cuenta;
NRO_CUENTA BALANCE
---------- ----------
1254120 20
SQL> SELECT *FROM transaccion;
ninguna fila seleccionada
SQL> UPDATE cuenta SET balance=25;
1 fila actualizada.
SQL> SELECT *FROM transaccion;
NRO_CUENTA HORA_MOD ID_CLIENTE ANT_BALANCE ACT_BALANCE
---------- -------- ---------- ----------- -----------
1254120 28/07/09 20 25
saludos