私はSQLを初めて使い、PostgreSQLで、人物が "yymmdd"の文字列 "personalNumber"から大人であるかどうかをチェックするトリガーを作成したいと思います。 私は年齢()関数で使用できるように、文字列からタイムスタンプを作成する方法を見つけることができません。PostgreSQLで年齢を取得する方法
ここまでは私のコードです。私は年齢の最初の入力変数が間違っていることを知っているが、私はそれを動作させる方法を見つけることができません。
CREATE FUNCTION is_person_adult() RETURNS trigger AS $person$
BEGIN
IF age(substr(new."personalNumber", 0, 2) + "-" + substr(new."personalNumber", 2, 4) + "-" + substr(new."personalNumber", 4, 6), current_date) > 18 THEN
new.isadult = TRUE;
ELSE
new.isadult := FALSE;
END IF;
END;
$person$ LANGUAGE plpgsql;
CREATE TRIGGER person_stamp BEFORE INSERT OR UPDATE ON person
FOR EACH ROW EXECUTE PROCEDURE is_person_adult();
注意をあなたが保存結果は明日までに時代遅れされること、および依存するデータを格納する[第2正規形]に違反:構築し、ちょうどそれを直接割り当てることができますSecond_normal_form)。誕生日を保存し、必要な時に年齢を計算する方がよいでしょう。 – Andomar