 
			
				22/01/2011, 09:34
			
			
			     |  
        |     |    |    Fecha de Ingreso: febrero-2010  
						Mensajes: 19
					  Antigüedad: 15 años, 8 meses Puntos: 0     |        |  
        crear un trigger cada vez que se cree una tabla en sql server 2005        Hola a todos.    
Necesito hacer un trigger de base de datos que permita que cada vez que se creen ciertas tablas inmeditamente cree un trigger DML, pero aún no logro porque me sale un error de sintaxis.    
CREATE TRIGGER TablasMM 
ON DATABASE 
FOR CREATE_TABLE 
AS 
BEGIN 
  DECLARE @TabName Sysname 
  SELECT @TabName=EventData().value('(/EVENT_INSTANCE/ObjectName)[1]','sysname') 
  IF (@TabName like 'MM2%') 
  BEGIN 
   CREATE TRIGGER T_MM201101 
    ON MM201101 
    FOR INSERT  
    AS 
	DECLARE @cuenta CHAR(15) 
	DECLARE @tipcom CHAR(5) 
	DECLARE @numcom CHAR(10) 
	DECLARE @ingreso CHAR(10) 
	DECLARE @valid int 
	DECLARE @valor NUMERIC(10,2) 
	SET @cuenta = (SELECT CPCCODCUE FROM Inserted) 
	SET @tipcom = (SELECT CCDCODCOM FROM Inserted) 
	SET @numcom = (SELECT CCMNUMCOM FROM Inserted) 
	SET @valor = (SELECT CMMVALCRE FROM Inserted) 
    SET @tercero = (SELECT TERCODTER FROM Inserted) 
	SET @fecha = (SELECT CCMFECCOM FROM Inserted) 
	SET @detalle = (SELECT CMMDETMOV FROM Inserted) 
	SET @numreg = (SELECT CMMNUMREG FROM Inserted) 
	IF (@cuenta = '41200201') AND (@tipcom = '012') 
	BEGIN  
	SET @ingreso = (SELECT AINCONSEC FROM SLFACTUR WHERE (CCMNUMCOM = @numcom)) 
	SET @valid = (SELECT COUNT(*) AS CANT 
				 FROM( 
				SELECT     AINCONSEC, SOSORDSER, SIPCODIGO,  SUM(SPHCANSER * (SPHTOTENT + SPHTOTPAC)) AS VALOR    
				FROM         SLPAQHOJ 
				WHERE     (AINCONSEC = @ingreso) AND (SPHCANSER > 0) AND (GASCODIG1 = '2001') AND CCCCODCEN = '23' 
				GROUP BY AINCONSEC,SOSORDSER, SIPCODIGO  
				HAVING (SUM(SPHCANSER * (SPHTOTENT + SPHTOTPAC))=@valor) 
				) AS A) 
        IF(@valid>0) 
		BEGIN 
		   IF exists(select * from MM201101 WHERE CCDCODCOM='012' AND CCMNUMCOM = @numcom AND CPCCODCUE = '41250204' AND CCCCODCEN = '23')  
           BEGIN   
				UPDATE MM201101 SET CMMVALCRE = CMMVALCRE+@valor WHERE CCDCODCOM='012' AND CCMNUMCOM = @numcom AND CPCCODCUE = '41250204'  
                AND CCCCODCEN = '23'  
           END 
           ELSE 
           BEGIN   
                UPDATE MM201101 SET CPCCODCUE = '41250204' WHERE CCDCODCOM='012' AND CCMNUMCOM = @numcom AND CPCCODCUE = '41200201'  
                AND CCCCODCEN = '23'	    
		   END	 
		END   
END 
  END 
END   
Al ejecutarlo, sale estos errores:   
Mens 156, Nivel 15, Estado 1, Procedimiento TablasMM, Línea 10 
Sintaxis incorrecta cerca de la palabra clave 'TRIGGER'. 
Mens 137, Nivel 15, Estado 1, Procedimiento TablasMM, Línea 24 
Debe declarar la variable escalar "@tercero". 
Mens 137, Nivel 15, Estado 1, Procedimiento TablasMM, Línea 25 
Debe declarar la variable escalar "@fecha". 
Mens 137, Nivel 15, Estado 1, Procedimiento TablasMM, Línea 26 
Debe declarar la variable escalar "@detalle". 
Mens 137, Nivel 15, Estado 1, Procedimiento TablasMM, Línea 27 
Debe declarar la variable escalar "@numreg".   
De manera que entiendo que es incorrecta la manera de ejecutar el trigger a partir de la definición de otro. Les agradezcon en lo que me puedan colaborar.           |