我遇到简单触发命令的问题。当在RIT学习的人插入表人时,该触发操作将插入表address_rit中。以下是触发命令的语法:SQL Oracle触发器
CREATE OR REPLACE TRIGGER addr
AFTER INSERT ON person
FOR EACH ROW
WHEN (NEW.college = 'RIT')
BEGIN
INSERT INTO address_rit (name, address, state)
VALUES (NEW.name, NEW.address, (SELECT name FROM states WHERE NEW.statecode = states.statecode));
END;
/
触发器已编译但带有警告。但是,进一步的检查表明触发器实际上有错误。这是编译错误。
PL/SQL: SQL Statement ignored ERROR
PL/SQL: ORA-00984: column not allowed here ERROR
我敢肯定,错误只是一个语法错误,但我找不到任何解决方案。让我知道是否需要添加更多细节。非常感谢您的帮助。
问题是,你同时使用'values'和'select' ......但康拉德的答案是要走的路。查看['insert'语法](http://www.techonthenet.com/sql/insert.php)获取更多信息。 – Ben 2012-02-24 17:06:45
@Ben - 你可以在'INSERT ... VALUES'语句中使用标量子查询。这有点古怪,但它是有效的语法。 – 2012-02-24 17:13:00
@JustinCave,你每天都会学到新的东西...... :-)我一直认为这是非法的;虽然我不会经常这样做... – Ben 2012-02-24 17:14:53