Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
GliderAlex
Member

Откуда: Воронеж
Сообщений: 275
MS SQL 2000, MS Access 2011

Помогите пожалуйста объеденить в одну процедуру следующие вещи

Удаление триггера из таблицы
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Trigger2]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[Trigger2]
GO

Запуск процедуры обновляющей всю таблицу
DECLARE @RC int
-- Set parameter values
EXEC @RC = [OFSSVS1].[dbo].[UpdateTime1111]

Создание триггера на таблицу
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

CREATE TRIGGER Trigger2
ON dbo.tbl_ShiftProtocol1
after insert,update
as
	UPDATE t1
	SET ID_Shift = CASE WHEN datediff(mi, dateadd(dd, datediff(dd, 0, t1.DateTime), 0), t1.datetime) > 1200 OR
							 datediff(mi, dateadd(dd, datediff(dd, 0, t1.DateTime), 0), t1.datetime) <= 480
						THEN 2 ELSE 1 END
	from dbo.tbl_ShiftProtocol1 t1 join inserted t2 on t1.id = t2.id


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO 

Мне бы их в одну процедуру что бы с кнопки в MS Access запускать... Помогите плз.
7 сен 11, 18:52    [11243583]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
снегирь в ожидании
Guest
GliderAlex,

1 динамический sql
2 alter table disable trigger
7 сен 11, 18:56    [11243602]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
GliderAlex
Member

Откуда: Воронеж
Сообщений: 275
Мне что первый что второй вариант ни о чем не говорят( Сейчас попробую найти что нить по этому вопросу
7 сен 11, 19:18    [11243708]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
GliderAlex
Member

Откуда: Воронеж
Сообщений: 275
Что то у меня ругается на вот такой вот синтаксис

USE OFSSVS1;
GO

DISABLE TRIGGER dbo.Trigger2 ON dbo.tbl_ShiftProtocol1;


ENABLE Trigger dbo.Trigger2 ON dbo.tbl_ShiftProtocol1;

GO

Пишет

Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'TRIGGER'.

Disable и Enable не понимает
8 сен 11, 08:29    [11244962]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
GliderAlex, а вы синтаксис сами придумываете?
8 сен 11, 08:43    [11244980]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
GliderAlex
Disable и Enable не понимает

Потому что вы придумали свой синтаксис вместо стандартного.

alter table <таблица> disable trigger <триггер или ALL>
alter table <таблица> enable trigger <триггер или ALL>
8 сен 11, 08:50    [11244985]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
GliderAlex
Member

Откуда: Воронеж
Сообщений: 275
Спасибо большое, вот так работает
SET XACT_ABORT ON
GO

BEGIN TRAN
USE OFSSVS1;
GO
Alter table dbo.tbl_ShiftProtocol DISABLE TRIGGER Trigger1;
GO

DECLARE @RC int
-- Set parameter values
EXEC @RC = [OFSSVS1].[dbo].[UpdateTime1111]

Alter table dbo.tbl_ShiftProtocol ENABLE TRIGGER Trigger1;
GO
Commit
8 сен 11, 10:53    [11245616]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
GliderAlex
Member

Откуда: Воронеж
Сообщений: 275
Кто нибудь мне подскажет как преобразовать этот запрос в процедуру?

Вот так не прокатывает

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO



CREATE PROCEDURE dbo.UpdateTimeFull1

SET XACT_ABORT ON
GO

BEGIN TRAN
USE OFSSVS1;
GO
Alter table dbo.tbl_ShiftProtocol DISABLE TRIGGER Trigger1;
GO

DECLARE @RC int
-- Set parameter values
EXEC @RC = [OFSSVS1].[dbo].[UpdateTime1111]

Alter table dbo.tbl_ShiftProtocol ENABLE TRIGGER Trigger1;
GO
Commit


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
8 сен 11, 19:37    [11250362]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры на удаление триггера запуск проц. и создание триггера заново  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Не делайте так. Лучше откорректируйте логику вашего триггера в зависимости от наличия, к примеру, временной таблицы, и если она есть, то ничего не делать.

CREATE PROCEDURE dbo.UpdateTimeFull1
as begin

SET XACT_ABORT ON

create table #switch_off_tbl_ShiftProtocol_Trigger1 ( id int )
DECLARE @RC int
-- Set parameter values
EXEC @RC = [OFSSVS1].[dbo].[UpdateTime1111]

end

В триггере в начале:

if object_id('tempdb..#switch_off_tbl_ShiftProtocol_Trigger1') is not null
  return


Сообщение было отредактировано: 8 сен 11, 19:44
8 сен 11, 19:43    [11250379]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить