2

私はテーブルを持っていますEmployee

  Emp_Id  Name
  1       XYZ
  2       ABC

と別のテーブルDivisionInfo

  DivisionID  Division  Emp_Id
       1       mmm          1
       2       nnnn         1
       3       oooo         1

テーブルにが存在するEmployee場合は、テーブルの更新をロールバックするトリガーを作成する必要があります。この場合。Emp_IdDivisionInfoEmp_Id = 1

SQLトリガーで更新されている行の行IDを取得するにはどうすればよいですか?

これは私のトリガーコードです:

ALTER TRIGGER [dbo].[EmployeeTrigger]
ON [dbo].[Employee]
FOR UPDATE 
AS
   IF((SELECT COUNT([DivisionID ]) 
       FROM [DivisionInfo] AS D 
       INNER JOIN Employee AS E ON D.[Emp_Id] = E.Emp_Id
       WHERE D.[Emp_Id] = E.Emp_Id) > 0)
   BEGIN
      RAISERROR ('Testing', 10, 1); 
      ROLLBACK TRANSACTION
      RETURN
   END

ここでは常に真実です

4

1 に答える 1

1

これを試して:

ALTER TRIGGER [dbo].[EmployeeTrigger]
ON [dbo].[Employee]
FOR UPDATE 
AS
IF((
    SELECT COUNT([DivisionID ])
    FROM [DivisionInfo] D
    JOIN INSERTED I ON I.[Emp_Id] = D.[Emp_Id])>0)
BEGIN
        RAISERROR ('Testing', 10, 1); 
     ROLLBACK TRANSACTION
     RETURN
END
于 2013-03-25T09:29:23.603 に答える