问题如下:插入行后我有一个oracle触发器。从触发器开始,我想调用一个php脚本并将刚插入的行字段作为参数传递。
Insert来自非常古老的遗留应用程序,几乎没有机会查看源代码。行经常插入,可以是一次约1000行的批次,也可以是30分钟内的一行,所以每次检查这个表,比方说,5秒不是一个选项。
所以,Idea是要有oracle触发器,每次插入时都会触发并调用我的php脚本?有什么想法吗?
提前致谢...
答案 0 :(得分:2)
当你说“php script”时,你的字面意思是命令行脚本,或者是通过apache / etc运行的一大块php。
如果是前者,那就去OMG小马。否则我会使用UTL_HTTP来调用Apache / PHP。实际上,我可能会考虑使用它(如果需要,更新你的php / c#)。
请记住..触发器是事务性的...如果您绝对必须从触发器调出,请注意您的触发器可能会运行多次(由于query restart)并且可能完全回滚,导致您的外部(可能是非事务性的)php调用现在无效。如果你的php无法处理这个问题,那么你的触发器可能会创建一个作业甚至是AQ中的消息,这也会加快处理速度,你可能不希望你的插件等待外部Web调用
答案 1 :(得分:0)
I want to call a php script when some row is inserted or updated in some table via oracle triggers . Currently I m using this but its not much of help.
CREATE OR REPLACE TRIGGER test_script
BEFORE INSERT OR UPDATE OR DELETE ON STATES
FOR EACH ROW
BEGIN
-- Flags are booleans and can be used in any branching construct.
CASE
WHEN INSERTING THEN
:'/! echo C:/wamp/bin/php/php5.3.5/php.exe C:/wamp/www/csv.php >> C:/wamp/www/log.txt'
WHEN UPDATING THEN
-- Include any code specific for when the trigger is fired from an UPDATE.
WHEN DELETING THEN
-- Include any code specific for when the trigger is fired from an DELETE.
END CASE;
END;
/