2012-01-25 7 views
1

私はpersonというテーブルを持っていますが、属性の1つはyears_workedです。SQLアサーション/トリガー:更新を禁止する属性を設定する方法

years_workedが減少するのを制限する方法を見つける必要があります。 トリガー/アサーション(ここで何を使用するかわかりません)では更新が増えるだけです。

+2

どのRDBMSを使用していますか? –

+0

@ pltm_dev私はあなたがマーティンの質問を理解したとは思わない。これに対して書かれたデータベースエンジンはどれですか? –

+0

私はそれを理解していますが、特定のエンジンはまだありません。抽象的な答え(あなたのものなど)は私には良いです –

答えて

1

以下のコードでは、制限の対象にならない更新された値をすべて更新前の状態に戻すだけです。これは用です。SQL Server、私は他のRDBMSで話すことができません。

create trigger RestrictYearsWorked 
on person 
after update 
as 

    update person 
    set years_worked = d.years_worked 
    from person p 
    inner join deleted d 
    on p.yourIdCol = d.yourIdCol 
    where p.years_worked < d.years_worked 

go