2016-10-06 17 views
0

更新トリガーを作成して、値をfalseに変更した後にEmpNctive列に基づいて日付をresignationdateという列に更新するようにします。更新のトリガーを作成する

両方の列は、tblEmployeeという同じテーブルにあります。

おかげ

+5

タグ。 (そのうちごくわずかしかANSI SQLトリガが実装されていません) – jarlh

+0

は、 '値をfalseに変更すると、EmpActiveカラムに基づいた日付で、resignationdateという名前のカラムを更新します。' – TheGameiswar

答えて

0

は、あなたがこのような構造を持つテーブルがあると仮定すると:あなたはこのような何か行うことができます

CREATE TABLE tblEmployee (
    resignationdate DATETIME, 
    EmpActive  BIT 
) 

CREATE TRIGGER tblEmployeeTrig 
    ON tblEmployee 
FOR UPDATE AS 
    BEGIN 
    IF (
     SELECT EmpActive 
     FROM INSERTED) = 0 
     UPDATE tblEmployee 
     SET resignationdate = getdate() 
    --WHERE {some conditions} 
    END 

をこれは、Sybase ASEの構文ですが、私はそれがだと思います他のDBMS構文の近くにあります。

あなたはこのようにそれをテストすることができます。

INSERT INTO tblEmployee VALUES (getdate(), 1) 
SELECT * FROM tblEmployee 

そして今、トリガーを起動:DBMSが使用

UPDATE tblEmployee 
SET EmpActive = 0 
+1

「近いと思います。私が知っている限り、SybaseとMicrosoft SQL Serverだけが 'inserted'と' deleted'疑似テーブルを持つセットベースのトリガを持っています。他の多くの製品には、行ごとのトリガーがあります。 –

+0

@Damien_The_Unbelieverしかし、それは私がトピックの所有者を助けることができるすべてです* _ * – Daria

関連する問題