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.