jdbc - Issue while call BEFORE trigger on postgresql -
i have jdbc client communicate postgresql database. jdbc create prepared statement insert data on table, @ moment of creation of query, client doesn't know field insert inside statement, , complete query i've write trigger fires before insert on table, find missing value, continue execute query. jdbc code:
string my_insert = "insert mytable values(?, ?, ?, ?, ?, ?)"; preparedstatement pstm = connection.preparestatement(my_insert); pstm5.setint(1, 2562); pstm5.setint(2, 22); pstm5.setint(3, 0); //unknown value, set 0 pstm5.setstring(4, "a string"); pstm5.setint(5, 0); //the other unknown value this trigger code:
create function perform_() returns trigger $mytrigger$ declare vend varchar(20); pre numeric(10,2); begin select field3, field5 othertable id = new.field2 vend, pre; new.field3 = vend; new.field5 = pre; return null; end; $mytrigger$ language plpgsql; create trigger mytrigger before insert on mytable execute procedure perform_(); when trigger fires have error:
exception: jdbcclass error: error: record "new" not assigned yet details: tuple structure of not-yet-assigned record indeterminate. select field3, field5 othertable id = new.field2 vend, pre; what mean? record new it's assigned can see jdbc code...
first, you've missed for each row in trigger declaration:
create trigger mytrigger before insert on mytable each row execute procedure perform_(); second, have return new; if want record inserted table
see sql fiddle demo
Comments
Post a Comment