sql sql是什么 ORACLE TRIGGER INSERT INTO...(SELECT*...)




plsql安装 (3)

这项工作。

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

所以,如果它适合你,那么试试这个:

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

如果要从另一个表中选择一个或多个行,则必须使用以下语法:

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

用Insert插入(选择* ...)

我正在尝试。

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

不工作...

这项工作。

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

触发

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;​

它不是关于你的触发器,而是因为INSERT语句

这里插入语句的作用如下

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>;

值的数量应与所提到的列数相匹配。

希望这可以帮助你理解


也许你可以发布你遇到的实际错误?

另外,我建议你重新思考你的方法。 包含DML的触发器引入了各种问题。 请记住,Oracle数据库可能需要重新启动触发器,因此可能会多次为特定行执行DML。

相反,将所有相关的DML语句放在PL / SQL过程中并调用它们。





plsql