PostgreSQL 9.1.0。 OS Ubuntu 11.10。コンパイラはgcc 4.6.1ここCトリガーに挿入されている行からデータを取得するにはどうすればよいですか?
は私のテーブルです:
CREATE TABLE ttest
(
x integer,
str text
)
WITH (
OIDS=FALSE
);
ALTER TABLE ttest OWNER TO postgres;
CREATE TRIGGER tb
BEFORE INSERT
ON ttest
FOR EACH ROW
EXECUTE PROCEDURE out_trig();
out_trigは、C functcionです。
今、私は挿入されている各行からデータを取得しようとしています。ここでは、コードは次のようになります。
if (TRIGGER_FIRED_BY_INSERT(trigdata->tg_event))
{
rettuple = trigdata->tg_trigtuple;
bool isnull = false;
uint32 x=rettuple->t_len;
int64 f;
f = (int64) GetAttributeByNum(rettuple->t_data, 1, &isnull);//error here
elog(INFO,"len of tuple: %d",x);
elog(INFO,"first column being inserted x: %d",f);
}
IましERROR:レコードの種類が登録されていない
SQL状態:42809
私が間違っているとどのようにそれを正しく行うにしていますか?
このトリガーにCを使用する必要がある理由は何ですか?エラーが発生している行を知っていますか? – Kuberchaun
理由は、同じ行に新しい行が挿入されたときにtcp \ ipを使ってメッセージを送信したいからです。また、コメント行にエラーがスローされます。 – Alexander