powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Триггер. Запрет множественного удаления строк.
4 сообщений из 4, страница 1 из 1
Триггер. Запрет множественного удаления строк.
    #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
Триггер. Запрет множественного удаления строк.
    #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
Триггер. Запрет множественного удаления строк.
    #32395569
Programm writer.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так будет работать, если я удаляю одну строчку, а если 10, то не будет.
При удалении 10 строчек в таблице deleted появляеся 10 удаляемых строчек и несколько из них могут удовлетворять условию Blok = 1.
...
Рейтинг: 0 / 0
Триггер. Запрет множественного удаления строк.
    #32395591
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так если среди 10 записей хоть одна соответствует ограничению, то ни одна из 10 и не удалиться, так как произошел откат операции. Впишите в триггер RAISERROR и матюгнитесь, что операция не возможна. Пусть клиентское приложение переформирует условия удаления.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Триггер. Запрет множественного удаления строк.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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