¿Alguien puede ayudarme con el problema de inserción del disparador que creé?
Entonces hice un disparador de inserción de la siguiente manera:
create or replace trigger discount
after insert on transaction
for each row
begin
if (new.desc_date = 'Y') then
insert into desc_transaction(discount) values (new.discount = '0.1');
end if;
end;
/
Advertencia: Trigger creado con errores de compilación.
show error;
3/1 PL/SQL: Sentencia SQL ignorada
3/54 PL/SQL: ORA-00917: falta la coma
cómo solucionarlo.
datos:
descdate contiene solo sí y no porque si noviembre tiene descuento y octubre no lo tiene.
Para la sección de descuento contiene 0.1 y null, por lo que si descdate es sí, será 0.1, de lo contrario, será null o ‘ ‘.
davy.ai
El error en el desencadenador se debe a una sintaxis incorrecta en la declaración de inserción. La forma correcta de insertar un valor en una columna es usar el operador de asignación “=”, no el operador de igualdad “==”. Aquí está el código de desencadenador corregido:
Tenga en cuenta que he eliminado la asignación innecesaria de “new.discount = ‘0.1’” e insertado directamente el valor “0.1” en la columna “discount” de la tabla “desc_transaction”.
Para ver los errores específicos en el desencadenador después de crearlo, puede utilizar el comando “show errors” como se muestra a continuación:
Esto mostrará cualquier error de compilación encontrado durante la creación del desencadenador. En este caso, debería mostrar el mensaje de error “PL/SQL: ORA-00917: falta una coma” en la línea 3, lo que indica que hay un error de sintaxis en la declaración de inserción.
Una vez que el código de desencadenador corregido se haya recompilado y ejecutado sin errores, debería insertar un valor de descuento de 0.1 en la tabla “desc_transaction” solo si la columna “desc_date” en la tabla “transaction” tiene un valor de ‘Y’.