一个标准触发器的书写形式


create trigger trg_T1_i ON T1 FOR INSERT 
AS

DECLARE @rc AS INT;
SET @rc = @@rowcount;

IF @rc = 0 RETURN;

DECLARE @keycol AS INT@datacol AS VARCHAR(10);

IF @rc = 1 -- single row
BEGIN
  
SELECT @keycol = keycol, @datacol = datacol FROM inserted;
  
PRINT 'Handling keycol: '
    
+ CAST(@keycol AS VARCHAR(10))
    
+ ', datacol: ' + @datacol;
END
ELSE -- multi row
BEGIN
  
SELECT * INTO #I FROM inserted;
  
CREATE UNIQUE CLUSTERED INDEX idx_keycol ON #I(keycol);

  
SELECT @keycol = keycol, @datacol = datacol
  
FROM (SELECT TOP (1) keycol, datacol
        
FROM #I
        
ORDER BY keycol) AS D;

  
WHILE @@rowcount > 0
  
BEGIN
    
PRINT 'Handling keycol: '
      
+ CAST(@keycol AS VARCHAR(10))
      
+ ', datacol: ' + @datacol;

    
SELECT @keycol = keycol, @datacol = datacol
    
FROM (SELECT TOP (1) keycol, datacol
          
FROM #I
          
WHERE keycol > @keycol
          
ORDER BY keycol) AS D;
  
END
END
GO

posted @ 2008-12-09 14:15  roboth  阅读(425)  评论(0)    收藏  举报