2017-05-25 21 views
0

こんにちは私の多対多の関係がどこにあるか、従業員が私のテーブルに挿入されたときに、私は、トリガーが、挿入されたレコードを含むかどうかをチェックして、従業員が現在3つ以上のジョブで認定されていることを確認して、10%のレイズを与えるようにしたいと考えています。 これは私が最初に試したが、その後、私は私が行っていることは、テーブル全体に影響を与えることを実現するものである:SQLのテーブルで最後に挿入されたレコードを選択する方法

create trigger raise 
on certified 
after insert 
as 
begin 
update employees set salary = salary + (salary*0.1) 
where (select count(job_id) from certified where empid = (select empid from 
inserted) group by empid)>3 
end 

私の質問は最後に挿入されたレコードを取得することが可能である方法ですか?

+0

答えはありませんが、従業員が3つ以上の職場で認定されていない場合は、引き上げを取り除くために別の手順が必要な場合があります。 –

+0

私はあなたが出力ステートメントを探していると信じています。 – jmag

+0

新しい認定資格が3つ以上ある場合は、さらに10%の引き上げが行われますか?特定の従業員が11の資格を持っている場合、彼らは給与の2倍以上の8%の給与を受け取ることになります。 –

答えて

0

最後に挿入されたレコードは、「挿入済み」テーブルの内側にあります。

私はこのアップデートがこの問題を解決すると思います。認定された仕事が3を超えて初めて初めて給与を引き上げることを覚えておいてください。あなたは5番目または6番目の認定された仕事の給料を増額しません。

update employees set salary=salary + (salary*0.1) 
where empid in 
(select empid from certified where empid in 
    (select empid from inserted) and (select count(job_id) 
    from certified b 
    where b.empid=certified.empid)=3+ 
     (select count(job_id) from inserted 
      where inserted.empid=certified.empid) 
) 

また、削除トリガーを作成することを忘れないでください。しかし、開発者として、私はこのビジネスルールをトリガーで構築しません。

関連する問題