Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Триггер. Запрет множественного удаления строк. / 4 сообщений из 4, страница 1 из 1
02.02.2004, 14:17
    #32395395
Programm writer.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер. Запрет множественного удаления строк.
ASE - 12.5

Подскажите пожалуйста, как можно запретить триггером множественное удаление строк из таблицы для тех строк, где значение одного из столбцов (Blok) равно 1.

Ниже приведённый пример не работает по той причине, что триггер срабатывает после удаления записей из MyTable и соответственно условие where MyTable.ID = deleted.ID ничего не возвращает.

CREATE TRIGGER dbo.DeleteMyTrigger ON dbo.MyTable
for DELETE AS

if (select deleted.Blok
from deleted, MyTable
where MyTable.ID = deleted.ID) = 1
begin
rollback trigger
end

Заранее благодарен.
...
Рейтинг: 0 / 0
02.02.2004, 15:31
    #32395553
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер. Запрет множественного удаления строк.
Не очень понял. А так разве нельзя:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TRIGGER dbo.DeleteMyTrigger ON dbo.MyTable for DELETE 
AS 
  if exists(
    select *
    from deleted
    where Blok  =  1 )
  begin 
    rollback trigger 
  end

По идее должно работать.
...
Рейтинг: 0 / 0
02.02.2004, 15:39
    #32395569
Programm writer.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер. Запрет множественного удаления строк.
Так будет работать, если я удаляю одну строчку, а если 10, то не будет.
При удалении 10 строчек в таблице deleted появляеся 10 удаляемых строчек и несколько из них могут удовлетворять условию Blok = 1.
...
Рейтинг: 0 / 0
02.02.2004, 15:51
    #32395591
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер. Запрет множественного удаления строк.
Ну так если среди 10 записей хоть одна соответствует ограничению, то ни одна из 10 и не удалиться, так как произошел откат операции. Впишите в триггер RAISERROR и матюгнитесь, что операция не возможна. Пусть клиентское приложение переформирует условия удаления.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Триггер. Запрет множественного удаления строк. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]