2012-02-21 9 views
0

У меня есть триггер, и я хочу отключить его из хранимой процедуры. Я использую 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'. 
+0

удалить GO внутри зр – Vikram

+0

@Vikram ' GO' может препятствовать созданию процедуры, но это все равно не приведет к тому, что триггер будет * выполнен *, поскольку OP, похоже, хочет. – Yuck

+0

@Yuck: вы правы. триггер запускается автоматически. но я думал, что он пытается его создать. – Vikram

ответ

0

удалить все операторы GO из insid e процедура.

0

создать процедуру Pro (параметры) как начинают DECLARE @trigs NVARCHAR (макс) объявлять @trip NVARCHAR (макс) набор @ тригов =» создать триггер три- на dbo.employee для вставки в выберите * от вставленной идти» набора @ TRIP = 'триггер падения три-'

EXEC sp_executesql @trigs вставки в значения сотрудников (параметры) EXEC sp_executesql @trip торцевые

Exec про пары например: ехес про 80, 'ааа', 'AAS', 25000, '2013-02-01', 'это'

Смежные вопросы