tipos procedimientos procedimiento funciones example ejemplos ejecutar developer bloques almacenado sql oracle plsql

example - procedimientos y funciones oracle pl/sql



ORACLE TRIGGER INSERT INTO...(SELECCIONAR*...) (3)

Disparador con Insertar en (seleccione * ...)

Lo estoy intentando.

INSERT INTO T_ USERS SELECT * FROM USERS WHERE ID = :new.ID;

no funciona...

este trabajo.

INSERT INTO T_USERS(ID) VALUES(:new.ID);

Desencadenar

create or replace trigger "TRI_USER" AFTER insert on "USER" for each row begin INSERT INTO T_USER SELECT * FROM USER WHERE ID = :new.ID; end;​


este trabajo.

INSERT INTO T_USERS(ID) VALUES(:new.ID);

Entonces, si le queda bien, intente esto:

INSERT INTO T_USER(ID) SELECT ID FROM USER WHERE ID = :new.ID;

Si desea seleccionar una o más filas de otra tabla, debe usar esta sintaxis:

insert into <table>(<col1>,<col2>,...,<coln>) select <col1>,<col2>,...,<coln> from ...;


¿Tal vez podría publicar el error real que está experimentando?

Además, sugiero que reconsideres tu enfoque. Los desencadenantes que contienen DML presentan todo tipo de problemas. Tenga en cuenta que Oracle Database puede necesitar reiniciar un desencadenador y, por lo tanto, podría ejecutar su DML varias veces para una fila en particular.

En su lugar, junte todas las declaraciones DML relacionadas en un procedimiento PL / SQL e invoque eso.


No se trata de tu disparador, sino de la instrucción INSERT

aquí insertar instrucción funciona como a continuación

INSERT INTO <TABLE>(COL1,COL2,COL3) VALUES (VAL1,VAL2,VAL3); --> If trying to populate value 1 by one. INSERT INTO <TABLE>(COL1,COL2,COL3) --> If trying to insert mult vales at a time SELECT VAL1,VAL2,VAL3 FROM <TABLE2>;

El número de valores debe coincidir con el número de columnas mencionadas.

Espero que esto te ayude a entender