2017-06-23 6 views
0

トリガーを作成して、そのエントリーが別のテーブルにも存在する場合、そのテーブルの行の更新を防止します。postgresqlの更新を防ぐためのトリガー

Table M 
m_id title 
1  abc 
2  def 
3  ghi 

Table N 
n_id m_id 
1  2 
2  3 

だから、私はテーブルから値1を更新しようとした場合、それはそう 行う必要があり、一方ことを許可してはならないテーブルmの値が2または3を更新しようとします。

答えて

1

BEFORE UPDATE ON m FOR EACH ROWを作成すると、IF OLD.m_id <> NEW.m_id AND EXISTS (SELECT 1 FROM n WHERE n.m_id = OLD.m_id)がチェックされ、その場合は例外がスローされます。

+0

残念ながら返事を申し訳ありませんが、私はすでにテーブルのNにあるテーブルMのエントリを更新しようとすると、そうすることを許可してはいけません。可能であれば、 –

+0

最後のクエリを伝えることはできますか? –

+0

しました。最終的なトリガ機能を書くことは簡単ではなく、読者には練習として残されています。 –

関連する問題