我花了整个下午搜索在这个问题上的W / O任何运气。
我曾与这两个规则和触发了尝试,获得相同的行为。 我可以创建规则或触发,通过使用“PSQL”然而,当我尝试插入一条记录远程使用Java应用程序手动插入一条记录到数据库进行本地测试,触发器不火。
一个简单的例子是这样的:
我有一个表“Customer_Address”有字段:
- 顾客ID
- 邮政编码
- 市
- 州
我试图建立规则和触发,这样,当一个新的记录被插入到“Customer_Address”只是一个邮编,我的触发/规则将采取邮编和使用嵌套子查询,将查询城市和国家从查找表然后设置使用来自嵌套子查询的返回值的城市和国家领域。
我能得到这个,当我在本地插入记录使用“psql的”数据库服务器上或者触发器或规则,但只有工作没有问题。
如果我尝试插入远程使用Java应用程序的记录,该记录插入精细尚未触发也不规则永远不会触发。
我甚至尝试命令“的alter table Customer_Address能够始终触发update_address_trig”;
然而,触发从来没有从远程插入闪光。 同去同一个规则。 由于两个触发器和规则工作从PSQL命令行细本地,并且由于其余字段获得从Java应用程序插入我相当肯定,我有我的触发/规则的语法与远程访问的数据库配置正确纠正一起等我即使使用相同的数据库用户在两个psql的命令行,并通过Java应用程序。
我发现各种解决问题的对策,对于MS SQL服务器却没有对PostgreSQL。
有人有想法么? 为什么一个触发器从本地VS远程插入不同的表现?
Thx提前!
布里格
触发代码:
create or replace function update_event_stage() returns trigger as
$$
begin
update Event_stage set EventCity = (select primarycity from zipmap where zipcode = Event_stage.Event_ZipCode) where EventCity is null;
RETURN NEW;
end
$$ LANGUAGE plpgsql;
create trigger update_event_stage_trig
AFTER INSERT or UPDATE on event_stage
FOR EACH ROW EXECUTE PROCEDURE update_event_stage();
alter table Event_stage enable always trigger update_event_stage_trig;
*** ***(由最后的评论2014年2月26日20:40 PST)** * ** * ** *
OK再次感谢,但我看到了前面的调试文档信息和添加RAISE条款尚未我没有错误,因此为什么我问,他们应该去因为我想,也许我是用他们在错误的地方。
反正还是没有错误,没有在Firebug,Java应用程序插入到表罚款还没有触发火灾。 手动插入用psql火灾触发,并根据邮政编码查找更新,市编码。
我会坚持下去黑客,我只是贴因为我看到其他的DB,如Oracle和SQL Server的存在是影响行为,这样,也许以为Postgres的已经相同但也许没有记录,但我想没有具体的参数。
如果我没有见过的触发器和规则做工精细本地我会怀疑我的触发编码是错误的但看到他们的工作为当地设计通过PSQL让我以为这是一些其他的问题比触发编码。
谢谢!