0

トリガーを作成して、21 歳未満および 67 歳以上のテーブル従業員への挿入および更新を防止する必要があります。コードの次は何ですか?

CREATE TRIGGER allowInsertUpdateemployee ON dbo.employee
    AFTER UPDATE, INSERT 

AS
BEGIN
DECLARE @v_ageLow INT = 21,
        @v_ageHigh  INT = 67,
        @v_dateLow date,
        @v_dateHigh date

SET @v_dateLow = DATEADD(YEAR, -1 * @v_ageLow, GETDATE())
SET @v_dateHigh = DATEADD(YEAR, -1 * @v_ageHigh, GETDATE())



END     
4

4 に答える 4

1
  1. 「INSTEAD OF INSERT、UPDATE」トリガーを使用します。
  2. INSERTED テーブルを使用して、新しい受信値をチェックします。必要に応じて raiseror を使用します。
  3. DELETED テーブルを使用して、更新が処理されているかどうかを検出します (これが役立ちます)。
  4. その後、手動で挿入または更新を行います (必要な場合)。

    INSERT INTO dbo.employee SELECT * FROM INSERTED I

于 2013-10-03T11:30:52.390 に答える
0

節を入れる必要がありORます。where従業員は 21 歳未満かつ 67 歳以上であってはなりません。

Create TRIGGER tr_Too_young_or_too_old 
ON TableName
AFTER INSERT
AS
if exists ( select *, DATEDIFF(yy, birthdate, GETDATE()) as age 
            from TableName
where DATEDIFF(yy, birthdate, GETDATE()) < 21 or DATEDIFF(yy, birthdate, GETDATE()) > 67 )
begin
    rollback
    RAISERROR ('Cannot Insert or Update where User is not in age limit', 16, 1);
end
于 2017-08-25T07:32:24.970 に答える