oracle、postgresql、mysql、ms sqlserverで複数行に跨がる成約を作ることはできる?

例えば、テーブルとして注文、注文明細があって
注文には1つ以上の注文明細が紐付く
注文には列として整数の最大価格がある
注文明細には列として整数の価格がある
注文に紐付く注文明細の合計価格が注文の最大価格を超える場合はチェックエラーになるようにしたい

SQL Developerなど一般的なDB管理ツールを使ってテーブルを直接編集することがあるのでアプリケーションでなくDBでチェックしたい