У меня есть триггер, и я хочу отключить его из хранимой процедуры. Я использую ms доступ, и когда я запускаю триггер из доступа ms, он дает мне сообщение об ошибке msg (ODBC). Я думаю, что я не могу создавать триггеры с использованием ms-доступа. Это мой триггер:создать триггер с использованием хранимой процедуры
IF EXISTS
(SELECT name
FROM sys.objects
WHERE name = 'UpdateComments' AND type = 'TR')
DROP TRIGGER tblEmailHdr_abenit01.UpdateComments;
GO
CREATE TRIGGER UpdateComments
ON tblEmailHdr_abenit01
AFTER Update
AS
IF (UPDATE (Comments)) BEGIN Update ttblEmailHdr_abenit01
Set UpdateComm = GetDate()
END;
GO
Это, как я пытался создать триггер из хранимой процедуры, но я получаю следующее сообщ об ошибке, когда я пытаюсь создать sproc:
Sproc:
CREATE PROCEDURE dbo.SP_AS_tblEmailHdr_Trig (@UserID as varchar(10))
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
-- Insert statements for procedure here
Declare @UserTable Varchar(50)
Declare @UserTable2 Varchar(50)
Set @UserTable = 'tblEmailHdr_' + @UserID ;
Set @UserTable2 = 'tblEmailHdr_' + @UserID + '.UpdateComments' ;
IF EXISTS
(SELECT name
FROM sys.objects
WHERE name = 'UpdateComments' AND type = 'TR') DROP TRIGGER @UserTable2
GO
CREATE TRIGGER UpdateComments
ON @UserTable
AFTER UPDATE
AS
IF (UPDATE (Comments))
BEGIN
--RAISERROR (50009, 16, 10)
Update @UserTable
Set UpdatedComm = GetDate()
END
GO
END
GO
ошибка сбщ я получаю:
Msg 102, Level 15, State 1, Procedure SP_AS_tblEmailHdr_Trig, Line 23
Incorrect syntax near '@UserTable2'.
Msg 102, Level 15, State 1, Procedure UpdateComments, Line 2
Incorrect syntax near '@UserTable'.
Msg 1087, Level 15, State 2, Procedure UpdateComments, Line 8
Must declare the table variable "@UserTable".
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'END'.
удалить GO внутри зр – Vikram
@Vikram ' GO' может препятствовать созданию процедуры, но это все равно не приведет к тому, что триггер будет * выполнен *, поскольку OP, похоже, хочет. – Yuck
@Yuck: вы правы. триггер запускается автоматически. но я думал, что он пытается его создать. – Vikram