powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / переписать тригер с Oracle PL/SQL на MSSQL T-SQL
4 сообщений из 4, страница 1 из 1
переписать тригер с Oracle PL/SQL на MSSQL T-SQL
    #32031545
Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите за беспокойство , но люди мы в MSSQL не местные.
Вот есть
CREATE OR REPLACE TRIGGER a.TASKS_BU_FIXER BEFORE
UPDATE OF "QTY" ON a.TASKS FOR EACH ROW
begin
select staff.id into :NEW.FIXER from a.staff where TRIM(staff.login) = USER;
select SYSDATE into :NEW.FIXEDDATE from dual;
end;
смысл работы - если изменяется значение поля QTY то дополнительно надо изменить поля кто (FIXER) и когда (FIXEDDATE).
Игорь.
...
Рейтинг: 0 / 0
переписать тригер с Oracle PL/SQL на MSSQL T-SQL
    #32031574
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер,

Ваш триггер может выглядеть таким образом:

\nCREATE TRIGGER TASKS_AU_FIXER
ON TASKS
FOR UPDATE
AS
SET NOCOUNT ON
if UPDATE(QTY)
begin
UPDATE TASKS
SET FIXER = (select staff.id from staff where LTRIM(RTRIM(staff.login)) = SESSION_USER),
FIXEDDATE = GETDATE()
FROM TASKS t, inserted i
WHERE t.id = i.id
end
GO


Я не стал указывать владельца (a) триггера и таблиц (необходимо).
Также переименовал триггер в TASKS_AU_FIXER, т.к. триггеров BEFORE в
MS SQL Server'е 2000 нет (только AFTER & INSTEAD OF).
Ну и предположил, что в таблице TASKS есть ключевое поле id (по аналогии
с таблицей staff)
Обработки ошибок (типа отсутствия в таблице staff записи, соответствующей
SESSION_USER) также нет.

Удачи Вам
...
Рейтинг: 0 / 0
переписать тригер с Oracle PL/SQL на MSSQL T-SQL
    #32031591
Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за помошь. Но решение выглядит по меньшей мере странно: из тригера на update запускать еще один update на мутирующую таблицу.
Неужели нет пути доступа к inserted на его изменение ?
...
Рейтинг: 0 / 0
переписать тригер с Oracle PL/SQL на MSSQL T-SQL
    #32031596
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день

из тригера на update запускать еще один update на мутирующую таблицу. Неужели нет пути доступа к inserted на его изменение ?

Такова специфика MS SQL Server'а: таблицы inserted и deleted служат для опроса, а не изменения (Two special tables are used in trigger statements: the deleted table and the inserted table. Microsoft® SQL Server™ 2000 automatically creates and manages these tables. You can use these temporary, memory-resident tables to test the effects of certain data modifications and to set conditions for trigger actions; however, you cannot alter the data in the tables directly.)

Полагаю, триггер должен работать. Или нет?

Удачи
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / переписать тригер с Oracle PL/SQL на MSSQL T-SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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