0

postgreSQL データベースで問題が発生しました。名前、生年月日、年齢のテーブルがあります。

    CREATE TABLE guy
        (name       VARCHAR(10),
         dob        DATE,
         age        INTEGER,
         PRIMARY KEY (name)
         );

私がやりたいのは、新しい男を挿入するときに、年齢が自動的に年齢になるようにすることです。

INSERT INTO guy VALUES ('Bill', '05-02-1992');

年齢は自動的に 21 になります。

これを行うにはトリガーが必要なのか、それとも DDL で何かできることがあるのか​​わからない。

助けてください。ありがとうございました

4

1 に答える 1

3

挿入時にそれを計算するには、トリガーが必要です。

その解決策の欠点は、テーブルを毎年更新する必要があることです。実際には、年齢列を「最新」に保つために、その日付が生年月日である行が 1 つある年に毎日更新する必要があります。 .

通常、既存のデータから簡単に導出できる情報を格納することはお勧めできません (特に計算コストが低い場合)。

次の選択に基づいて、オンザフライで情報を返すビューを作成できます。

select name,
       dob,
       age(dob) as age
from guy;

これにより、テーブル内のデータを更新する必要なく、常に最新の情報が表示されます。

于 2013-05-08T23:55:52.320 に答える