トリガーを使用して Firebird テーブルの完全なレコードを複製する UDF の作成方法を調査しています。
いくつかのテーブルに関するリビジョン/履歴を作成し、UDF を使用して mongodb データベースにデータを複製し、mongodb に接続してそこにレコードを挿入したい。
私の質問は:私は、引数として値を渡すか、単に通過することなく自動に列の値を取得するために、現在のテーブルと行を認識し、それを呼び出したときにUDFを作成することが可能であるとOLD
し、NEW
コンテキスト変数を?
このようなもの:
CREATE TRIGGER
MY_REPLICATOR
ACTIVE AFTER INSERT OR UPDATE OR DELETE
POSITION 99
ON MY_TABLE
AS
BEGIN
/*INSIDE THE UDF IT IDENTIFIES THE CURRENT TABLE-ROW
AND REPLICATE ALL COLUMNS VALUES TO MY MONGODB*/
MY_UDF_REPLICATION(OLD, NEW);
END
Firebird 3 では、適切な言語で外部トリガーを記述し、現在のレコード コンテキストを取得できます。まだ FB 2.5 以前を使用している場合は、テーブル内のすべての列に対して UDF を呼び出すアプローチを使用します。データベースの構造に応じたこのようなトリガーの作成は、簡単に自動化できます。
CREATE TRIGGER MY_REPLICATOR FOR My_TABLE
ACTIVE
AFTER INSERT OR UPDATE OR DELETE
POSITION 99
AS
BEGIN
MY_UDF_START_REPLICATE_ROW(CURRENT_TRANSACTION, 'MY_TABLE');
MY_UDF_REPLICATE_INT_COLUMN(CURRENT_TRANSACTION, 'COLUMN_NAME_1',
OLD.column_name_1, NEW.column_name_1);
MY_UDF_REPLICATE_VARCHAR_COLUMN(CURRENT_TRANSACTION, 'COLUMN_NAME_2',
OLD.column_name_2, NEW.column_name_2);
...
-- call appropriate function for every column of the table
...
MY_UDF_END_REPLICATE_ROW(CURRENT_TRANSACTION, 'MY_TABLE');
END
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加