SQL Server 2005トリガ

私はこのようなテーブルを持っている

table-1
Project-name        proj-status
-----------         -----------
pro1                progress
pro2                progress
pro3                progress

完了したproj-statusを更新すると

Project-name        proj-status
-----------         -----------
pro1                progress
pro2                completed
pro3                progress

テーブル2に挿入する必要があります

table-2
completed prject
----------------
pro2

私はトリガーを使ってこれをしたい!私を助けてください。

0
私はあなたのためにあなたの仕事をするつもりはありません。 SQL Serverのすべてのバージョンがトリガーをサポートしているわけではありません(StandardとExpressはサポートしていません)
追加された 著者 SJuan76,
私は訂正した。私は長い間、SQL Server 2000のバージョン間でトリガ機能にいくつかの違いがあることを発見しましたが、そのドキュメントを見つけることさえできません。
追加された 著者 SJuan76,
@ SJuan76 - 私はあなたの恩赦を頼む? StandardとExpressは最も確実にトリガーをサポートします。
追加された 著者 Damien_The_Unbeliever,
完成した行に table1 をフィルタするビューを持っているだけでなく、常に正しいものになり、コードを更新するためのコードを書く必要がありません。
追加された 著者 Damien_The_Unbeliever,
私は2005年を使用しています
追加された 著者 Sheik Syed Mohaideen,

1 答え

下の例ではこのような更新トリガーを作成し、従業員IDがテーブルemp1にコピーされたその従業員が「完了」に更新されたときにempテーブルを持っています

ALTER TRIGGER [dbo].[updtrigg] 
ON  [dbo].[emp] 
AFTER UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    declare @emp as varchar(50)
    declare @empid as varchar(5)
    SELECT @empid = empid, @emp = employee  FROM   inserted
     if(@emp = 'completed')
     begin
        INSERT into emp1 (employee) values(@empid)
     end
END
0
追加された
トリガでは inserted に1行しか存在しないとみなします。それは一般的に安全な仮定ではありません。
追加された 著者 Damien_The_Unbeliever,
複数行の挿入で壊れたトリガーは、トリガーが壊れています。さらに、OPは「proj-statusを完了した場合に更新すると」と述べただけで、その更新が1つの行に適用されるのか、単一の文で多くの行に適用されるのかは言及されていません。
追加された 著者 Damien_The_Unbeliever,
質問は単一の更新について記述されています。バッチ更新があった場合、トリガーは行き過ぎのロックを導くために行く方法ではないので、私はそのように答えるだろう。
追加された 著者 lloydom,