es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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 desc
date es sí, será 0.1, de lo contrario, será null o ‘ ‘.

Tags:  ,

Answer

  1. Avatar for 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:

    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 (0.1);
        end if;
    end;
    /
    

    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:

    show errors trigger discount
    

    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’.

Comments are closed.