1

ここにテーブルがあります

表1

id  value
1   30
2   40
3   34
4   56

そして、表2に「参照セル」を作成したいと思います

表 2 (表 1 から MAX を収集)

Name  value
1&2   40 [MAX Table1 (1,2)]
3&4   56 [MAX Table1 (3,4)]

どうすれば参照テーブルを達成できますか。どの表 2 が表 1 の内容を参照しているか。表 1 が更新されるたびに、表 2 の値も更新されます。

前もって感謝します

4

1 に答える 1

1

トリガー方法は次のように実行できます。

CREATE TRIGGER trigger_table1
  BEFORE INSERT OR UPDATE
  ON table1
  FOR EACH ROW
  EXECUTE PROCEDURE fn_trigger_table1();

そして次のような関数:

CREATE OR REPLACE FUNCTION fn_trigger_table1()
  RETURNS trigger AS
$BODY$
  DECLARE
BEGIN
IF (TG_OP = 'INSERT') OR (TG_OP = 'UPDATE') THEN
    IF NEW.id=1 OR NEW.id=2 THEN
        IF NEW.value>(SELECT MAX(value) FROM table1 WHERE (id=1 or id=2)) then
            UPDATE table2 SET value=NEW.value WHERE name='1&2';
        end if;
    ELSE IF NEW.id=3 OR NEW.id=4 THEN
        IF NEW.value>(SELECT MAX(value) FROM table1 WHERE (id=3 or id=4)) THEN
            UPDATE table2 SET value=NEW.value WHERE name='3&4';
        END IF; 
    END IF;
END IF; 

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

ビューでもこの作業を行うことができます。必要に応じて、サンプルを示します。

于 2013-05-28T18:58:18.193 に答える