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