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

Откуда:
Сообщений: 5555
Добрый день
подскажите по триггеру, почему то запрет срабатывает на всех пользователей
USE [biotime_old]
GO
/****** Object:  Trigger [dbo].[trigger_audit_dd]    Script Date: 30.03.2017 11:01:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[trigger_audit_dd]
    ON [dbo].[USERINFO] AFTER DELETE
    AS 
BEGIN
if (SUSER_SNAME() != 'sa')  

 RAISERROR ('Запрещено добавление данных этим пользователем! Сообщите о инциденте Осодоеву!',10, 1)
   ROLLBACK
END
30 мар 17, 06:14    [20349253]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Massa52
Member

Откуда:
Сообщений: 389
Gallemar,
A
if
относится только
RAISERROR
?
30 мар 17, 07:30    [20349290]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
Что бы было понятнее, что происходит, расставим BEGIN ... END:
ALTER TRIGGER [dbo].[trigger_audit_dd]
    ON [dbo].[USERINFO] AFTER DELETE
    AS 
BEGIN

    if (SUSER_SNAME() != 'sa')  
    BEGIN
        RAISERROR ('Запрещено добавление данных этим пользователем! Сообщите о инциденте Осодоеву!',10, 1)
    END



    ROLLBACK    ---    Это выполняется всегда, независимо от результата проверки в IF

END
30 мар 17, 07:58    [20349311]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Конкретно в это случае проще сделать триггер INSTEAD OF DELETE.
И откатывать ничего не придётся.
30 мар 17, 10:27    [20349709]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Gallemar,

"почему то"... BEGIN END писать - надо нанимать отдельного программиста, существующий не справляется...
30 мар 17, 13:11    [20350561]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить